home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 6 / Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso / 008a / intr26b.zip / INTERRUP.E < prev    next >
Text File  |  1991-06-15  |  275KB  |  7,744 lines

  1. INT 60 - reserved for user interrupt
  2. ----------60---------------------------------
  3. INT 60 - Zero Bug Virus
  4.    The "Zero Bug" virus hooks this vector.  Purpose unknown.
  5. SeeAlso: INT 32
  6. ----------60---------------------------------
  7. INT 60 - Adaptec and OMTI controllers - DRIVE 0 DATA
  8. SeeAlso: INT 64"Adaptec"
  9. ----------60---------------------------------
  10. INT 60 - Atari Portfolio - USER INTERFACE FUNCTIONS
  11.    supplies a number of subfunctions which perform such functions as drawing
  12.    boxes and menus, and provide input line editing
  13. SeeAlso: INT 61"Atari"
  14. ----------60---------------------------------
  15. INT 60 - PC-IPC API
  16.     STACK:    DWORD    pointer to parameter block (see below)
  17. Return: STACK:    unchanged
  18. Notes:    PC-IPC is a shareware TSR by Donnelly Software Engineering which allows
  19.       communication between independent programs
  20.     INT 60 is the default, any interrupt vector may be used by specifying
  21.       the vector on the commandline
  22.  
  23. Format of parameter block:
  24. Offset    Size    Description
  25.  00h    WORD    caller's ID
  26.  02h    WORD    to ID
  27.  04h    WORD    command code (see below)
  28.  06h    WORD    returned status
  29.         bit 0: unused
  30.         bit 1: IPC enabled
  31.         bit 2: IPC installed
  32.         bit 3: error
  33.         bit 4: message(s) available
  34.  08h    WORD    returned error code (see below)
  35.  0Ah    WORD    size of data
  36.  0Ch    DWORD    pointer to data buffer
  37.  
  38. Values of command code:
  39.  01h "IPC_CMND_INQUIRE"     inquire current status
  40.         set status field, writes WORD to data buffer containing free
  41.           message space in bytes, and sets the "size" field to the
  42.           number of messages waiting
  43.  02h "IPC_CMND_ENABLE"    reenable PC-IPC
  44.         ignored unless called with the same ID that disabled PC-IPC
  45.  03h "IPC_CMND_DISABLE" disable PC-IPC
  46.  04h "IPC_CMND_INSTALL" reset PC-IPC
  47.  06h "IPC_CMND_RDATA"    read data
  48.         returns first message in data buffer, sets "size" to message
  49.           length and "to ID" field to sender's ID
  50.         if no messages available, bit 4 of status is cleared and "size"
  51.           is set to zero
  52.  07h "IPC_CMND_SDATA"    send data
  53.  08h "IPC_CMND_REQID"    require user ID
  54.         create a new recognized ID and return in "caller's ID" field
  55.  09h "IPC_CMND_DELID"    cancel user ID
  56.         delete caller's ID from pool of recognized IDs
  57.  0Ah "IPC_CMND_RDATAW"    read data, wait if no messages available
  58.  0Bh "IPC_CMND_VERS"    get PC-IPC version 
  59.         string representing version returned in data buffer, "size"
  60.           field set to length of string
  61.  
  62. Values for error code:
  63.  00h    no error
  64.  01h    invalid command or parameter
  65.  02h    only process 0 can install/reset IPC
  66.  03h    process can not install/reset IPC
  67.  04h    IPC is not enabled
  68.  05h    process can not disable IPC
  69.  06h    invalid destination process ID
  70.  07h    invalid sending process ID
  71.  08h    invalid data destination
  72.  09h    no more process IDs available
  73.  0Ah    can not relinquish that process ID
  74.  0Bh    message space is full
  75.  0Ch    IPC is not installed
  76. ----------60---------------------------------
  77. INT 60 - Tangram Arbiter - API
  78. Notes:    Arbiter may use any interrupt from 60h to 66h (parameterized)
  79.     identified by string "@ARB_API" immediately following a short jump at
  80.       the interrupt handler address
  81.     Arbiter makes a PC disk look like a slow disk over an SNA link to an
  82.       IBM mainframe
  83. ----------60---------------------------------
  84. INT 60 - INTRSPY/CMDSPY API
  85. Notes:    INTRSPY will hook the first available interrupt in the range 60h-67h.
  86.     The installation check is to 
  87.       a) determine that the handler is an IRET instruction
  88.       b) the signature 0Dh "INTRSPY vN.NN" immediately precedes the handler
  89.       If INTRSPY is installed, the DWORD immediately after the IRET stores
  90.       its entry point.
  91.     INTRSPY is a script-driven debugger included with the book
  92.       _Undocumented_DOS_.
  93.  
  94. Call INTRSPY entry point with:
  95.     AH = function
  96.         00h ???
  97.         01h set current directory (for use in reporting)
  98.         ES:DI -> counted string containing directory name (max 79 char)
  99.         02h set name of script file
  100.         ES:DI -> counted string containing file name (max 79 chars)
  101.         03h set script arguments
  102.         ES:DI -> counted string containing arguments (max 79 chars)
  103.         04h get directory set with function 01h
  104.         ES:DI -> 80-byte buffer for directory name
  105.         05h get name of script file
  106.         ES:DI -> 80-byte buffer for script filename
  107.         06h get script arguments
  108.         ES:DI -> 80-byte buffer for script arguments
  109.         07h get ???
  110.         CL = 00h-15h specifies what to get
  111.         ES:DI -> WORD to be set with desired value on return
  112.         08h get ???
  113.         ES:DI -> WORD to be set with returned value
  114.         09h get ???
  115.         ES:DI -> WORD to be set with returned value
  116.         0Bh store code for interrupt handler???
  117.         ES:DI -> data
  118.         CX = number of bytes
  119.         0Ch ???
  120.         ES:DI -> ???
  121.         0Dh get ???
  122.         ES:DI -> BYTE to be set with returned value
  123.         0Eh set ??? flag
  124.         0Fh clear ??? flag
  125.         10h ???
  126.         Return: AL = 04h or 05h if failed
  127.         11h ???
  128.         Return: AL = 05h if failed
  129.         12h get ???
  130.         ES:DI -> buffer
  131.         Return: CX = number of bytes returned in buffer
  132.         13h ???
  133. Return: AH = 00h
  134.     AL = status
  135.         00h successful
  136.         01h invalid function
  137.         02h ???
  138.         03h ???
  139.         04h ???
  140.         05h ???
  141. ----------60---------------------------------
  142. INT 60 - PC/370 v4.2 - ???
  143.     ???
  144. Return: ???
  145. Notes:    PC/370 is an IBM 370 emulator by Donald S. Higgins
  146.     this is the default interrupt, however the documentation includes
  147.       instructions for patching the system for another interrupt
  148. SeeAlso: INT 2F/AX=7F24h,INT DC"PC/370"
  149. ----------60---------------------------------
  150. INT 60 - FTP Packet Driver - PC/TCP Packet Driver Specification
  151.    The handler for the interrupt will start with a 3-byte jump instruction, 
  152.    followed by the ASCIZ string "PKT DRVR".  To find the interrupt being used
  153.    by the driver, an application should scan through interrupt vectors 60h to
  154.    80h until it finds one with the "PKT DRVR" string.
  155. ----------6000-------------------------------
  156. INT 60 - SYS_PROF.EXE - PROFILER STATUS
  157.     AH = 00h
  158. Return: AX = 0000h    profiling is off
  159.         otherwise profiling is on
  160. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  161. SeeAlso: AH=01h"SYS_PROF",02h"SYS_PROF"
  162. ----------6000-------------------------------
  163. INT 60 - MDEBUG - GET STATUS
  164.     AH = 00h
  165.     DS:SI -> password or a null byte
  166. Return: AX = return code
  167.         FFFEh password is invalid
  168.         FFFDh display mode is invalid
  169.        else successful
  170.         ES = value of the monitor register SE
  171.         DI = value of the monitor register OF
  172.         CH = monitor color
  173.         CL = debugger color
  174.         BH = monitor start line
  175.         BL = debugger start line
  176.         AH = makecode of the hotkey
  177.         AL = ASCII code of the hotkey
  178.         DL = status of special keys (only SHIFT, ALT, CTRL) for the
  179.             hotkey (coded as for the keyboard flag at 0040h:0017h)
  180.         DH = basic process number for the communication with drivers
  181.             process number for the display driver, DH+1 = process
  182.             number for the command driver(s)
  183.     DS:SI -> MDEBUG identification table
  184. Notes:    MDEBUG is a shareware memory-resident debugger by Bernd Schemmer
  185.     MDEBUG uses INT 60 by default, but may be directed to any of INT 60
  186.       through INT 67; the interrupt handler is preceded by the signature
  187.       "USERINT" and is not chained
  188.     if DS:SI points at a null byte, MDEBUG will prompt for a password if
  189.       passwords are active; enough stack space must be provided for an
  190.       INT 10h call
  191. SeeAlso: AH=02h"MDEBUG"
  192.  
  193. Format of MDEBUG identification table:
  194. Offset    Size    Description
  195.  -2    WORD    entry offset
  196.  00h    WORD    CS of MDEBUG
  197.  02h    DWORD    old INT 08h vector
  198.  06h    DWORD    old INT 09h vector
  199.  0Ah    DWORD    address INT 16h routine used by MDEBUG
  200.  0Eh    BYTE    length of version string
  201.  0Fh  N BYTEs    version string
  202. ----------6001-------------------------------
  203. INT 60 - MDEBUG - GET ADDRESS OF THE HELP REGISTERS
  204.     AH = 01h
  205.     DS:SI -> password or a null byte
  206. Return: AX = return code
  207.         FFFEh password is invalid
  208.         FFFDh display mode is invalid
  209.        else successful
  210.         ES:DI point to the help registers of MDEBUG
  211.            ES:DI-02h  -> R0
  212.            ES:DI      -> R1
  213.            ES:DI+02h  -> R2
  214.            ES:DI+04h  -> R3
  215.            ...
  216.            ES:DI+0Eh  -> R8
  217. ----------6001FF-----------------------------
  218. INT 60 - FTP Packet Driver - BASIC FUNC - GET DRIVER INFO
  219.     AX = 01FFh
  220.     BX = handle returned by function 02h
  221. Return: CF set on error
  222.         DH = error code (see below)
  223.     CF clear if successful
  224.         BX = version
  225.         CH = network interface class (see below)
  226.         DX = interface type (see below)
  227.         CL = number
  228.         DS:SI -> name
  229.         AL = driver functions supported
  230.         01h basic
  231.         02h basic and extended
  232.         05h basic and high-performance
  233.         06h basic, high-performance, and extended
  234.         FFh not installed
  235. Note:    the handle in BX is optional for drivers written to v1.07 or later of
  236.       the packet driver specification
  237.  
  238. Values for error code:
  239.     01h invalid handle number
  240.     02h no interfaces of the specified class found
  241.     03h no interfaces of the specified type found
  242.     04h no interfaces of the specified number found
  243.     05h bad packet type
  244.     06h interface does not support multicast messages
  245.     07h this packet driver cannot terminate
  246.     08h invalid receiver mode
  247.     09h insufficient space
  248.     0Ah type accessed but never released
  249.     0Bh bad command
  250.     0Ch packet could not be sent
  251.     0Dh hardware address could not be changed
  252.     0Eh hardware address has a bad length or format
  253.     0Fh could not reset interface
  254.  
  255. Values for Network Interface classes/types:
  256.     Class 01h  Ethernet/IEEE 802.3     
  257.     01h 3COM 3C500/3C501
  258.     02h 3COM 3C505
  259.     03h MICOM-Interlan NI5010
  260.     04h BICC Data Networks 4110
  261.     05h BICC Data Networks 4117
  262.     06h MICOM-Interlan NP600
  263.     08h Ungermann-Bass PC-NIC
  264.     09h Univation NC-516
  265.     0Ah TRW PC-2000    
  266.     0Bh MICOM-Interlan NI5210
  267.     0Ch 3COM 3C503
  268.     0Dh 3COM 3C523
  269.     0Eh Western Digital WD8003
  270.     0Fh Spider Systems S4
  271.     10h Torus Frame Level
  272.     11h 10Net Communications
  273.     12h Gateway PC-bus
  274.     13h Gateway AT-bus
  275.     14h Gateway MCA-bus
  276.     15h IMC PCnic
  277.     16h IMC PCnic II
  278.     17h IMC PCnic 8-bit
  279.     18h Tigan Communications
  280.     19h Micromatic Research
  281.     1Ah Clarkson "Multiplexor"
  282.     1Bh D-Link 8-bit
  283.     1Ch D-Link 16-bit
  284.     1Dh D-Link PS/2
  285.     1Eh Research Machines 8
  286.     1Fh Research Machines 16
  287.     20h Research Machines MCA
  288.     21h Radix Microsystems EXM1 16-bit
  289.     22h Interlan Ni9210
  290.     23h Interlan Ni6510
  291.     24h Vestra LANMASTER 16-bit
  292.     25h Vestra LANMASTER 8-bit
  293.     26h Allied Telesis PC/XT/AT
  294.     27h Allied Telesis NEC PC-98
  295.     28h Allied Telesis Fujitsu FMR
  296.     29h Ungermann-Bass NIC/PS2
  297.     2Ah Tiara LANCard/E AT
  298.     2Bh Tiara LANCard/E MC
  299.     2Ch Tiara LANCard/E TP
  300.     2Dh Spider Communications SpiderComm 8
  301.     2Eh Spider Communications SpiderComm 16
  302.     2Fh AT&T Starlan NAU
  303.     30h AT&T Starlan-10 NAU
  304.     31h AT&T Ethernet NAU
  305.     32h Intel smart card
  306.     Class 02h  ProNET-10
  307.     01h Proteon p1300
  308.     02h Proteon p1800
  309.     Class 03h  IEEE 802.5/ProNet-4
  310.     01h IBM Token-Ring Adapter
  311.     02h Proteon p1340
  312.     03h Proteon p1344
  313.     04h Gateway PC-bus
  314.     05h Gateway AT-bus
  315.     06h Gateway MCA-bus
  316.     Class 04h  Omninet
  317.     Class 05h  Appletalk
  318.     Class 06h  Serial Line
  319.     01h Clarkson 8250-SLIP
  320.     02h Clarkson "Multiplexor"
  321.     Class 07h  StarLAN (subsumed by Ethernet class)
  322.     Class 08h  ARCnet
  323.     01h Datapoint RIM
  324.     Class 09h  AX.25
  325.     Class 0Ah  KISS
  326.     Class 0Bh  IEEE 802.3 with 802.2 headers
  327.     types same as for class 01h
  328.     Class 0Ch  FDDI with 802.2 headers
  329.     Class 0Dh  Internet X.25
  330.     01h Western Digital
  331.     02h Frontier Technology
  332.     Class 0Eh  N.T. LANSTAR (encapsulating DIX Ethernet)
  333.     01h NT LANSTAR/8
  334.     02h NT LANSTAR/MC
  335. Note: class and type numbers are cleared through FTP Software
  336. ----------6001-------------------------------
  337. INT 60 - SYS_PROF.EXE - TURN PROFILING OFF
  338.     AH = 01h
  339. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  340. SeeAlso: AH=00h"SYS_PROF",02h"SYS_PROF"
  341. ----------6002-------------------------------
  342. INT 60 - MDEBUG - SET STATUS
  343.     AH = 02h
  344.     DS:SI -> password or a null byte
  345.     ES = new value for the register SE
  346.     DI = new value for the register OF
  347.     CH = new monitor color if nonzero
  348.     CL = new debugger color if nonzero
  349.     BH = new monitor start line if nonzero
  350.     BL = new debugger start line if nonzero
  351.     AL = new ASCII code for the hotkey ('A'..'Z', 'a'..'z') if nonzero
  352.     DL = new status of the special keys (SHIFT, ALT, CTRL) for the hotkey
  353.         if nonzero
  354.     DH = if nonzero, new basic process number for communication with the
  355.         drivers (DH = multiplex number for the display driver,
  356.         DH+1 = multiplex number for the command driver or drivers)
  357. Return: AX = return code
  358.         FFFFh call not allowed
  359.         FFFEh password is invalid
  360.         FFFDh display mode is invalid
  361.         0000h successful, status changed
  362.        else AL = error code
  363.             bit 0 invalid monitor start line
  364.             1 invalid debugger start line
  365.             2 invalid hotkey
  366.             3 invalid process number
  367.               4-7 reserved
  368. Note:    the values of the registers SE and OF are always changed, the other
  369.       values are only changed if they are valid
  370. SeeAlso: AH=00h"MDEBUG"
  371. ----------6002-------------------------------
  372. INT 60 - FTP Packet Driver - BASIC FUNC - ACCESS TYPE
  373.     AH = 02h
  374.     AL = interface class
  375.     BX = interface type
  376.     DL = interface number
  377.     DS:SI -> type
  378.     CX = length of type
  379.     ES:DI -> receiver
  380. Return: CF set on error
  381.         DH = error code (see AX=01FFh)
  382.     CF clear if successful
  383.         AX = handle        
  384. SeeAlso: AH=03h"FTP"
  385.  
  386. Receiver is called with
  387.     AX = subfunction
  388.         00h application to return pointer to buffer in ES:DI
  389.         returned ES:DI = 0000h:0000h means throw away packet
  390.         01h copy completed
  391.         DS:SI -> buffer
  392.     BX = handle
  393.     CX = buffer length
  394. when a packet is received
  395. ----------6002-------------------------------
  396. INT 60 - SYS_PROF.EXE - TURN PROFILING ON
  397.     AH = 02h
  398. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  399. SeeAlso: AH=00h"SYS_PROF",01h"SYS_PROF"
  400. ----------6003-------------------------------
  401. INT 60 - MDEBUG - POP UP
  402.     AH = 03h
  403.     DS:SI point to the password or a null byte
  404.     ES -> new value for the register SE
  405.     DI -> new value for the register OF
  406. Return: AX = return code
  407.         FFFFh call not allowed
  408.         FFFEh password is invalid
  409.         FFFDh display mode is invalid
  410.        else successful
  411. SeeAlso: AH=04h"MDEBUG"
  412. ----------6003-------------------------------
  413. INT 60 - FTP Packet Driver - BASIC FUNC - RELEASE TYPE
  414.     AH = 03h
  415.     BX = handle
  416. Return: CF set on error
  417.        DH = error code (see AX=01FFh)
  418.     CF clear if successful    
  419. SeeAlso: AH=02h"FTP"
  420. ----------6003-------------------------------
  421. INT 60 - SYS_PROF.EXE - GET ADDRESS OF PROFILING TABLE
  422.     AH = 03h
  423. Return: ES:BX -> profiling table
  424. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  425. SeeAlso: AH=04h"SYS_PROF"
  426. ----------6004-------------------------------
  427. INT 60 - FTP Packet Driver - BASIC FUNC - SEND PACKET
  428.     AH = 04h
  429.     DS:SI -> buffer
  430.     CX = length
  431. Return: CF set on error
  432.         DH = error code (see AX=01FFh)
  433.     CF clear if successful
  434. Note:    the buffer may be modified immediately upon return from this call
  435. SeeAlso: AH=0Bh
  436. ----------6004-------------------------------
  437. INT 60 - MDEBUG - POP UP
  438.     AH = 04h
  439.     DS:SI -> password or a null byte
  440. Return: AX = return code
  441.         FFFFh call not allowed
  442.         FFFEh password is invalid
  443.         FFFDh display mode is invalid
  444.        else successful
  445. SeeAlso: AH=03h"MDEBUG"
  446. ----------6004-------------------------------
  447. INT 60 - SYS_PROF.EXE - CLEAR PROFILING TABLE
  448.     AH = 04h
  449. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  450. SeeAlso: AH=03h"SYS_PROF"
  451. ----------6005-------------------------------
  452. INT 60 - FTP Packet Driver - BASIC FUNC - TERMINATE DRIVER FOR HANDLE
  453.     AH = 05h
  454.     BX = handle
  455. Return: CF set on error
  456.        DH = error code (see AX=01FFh)
  457.     CF clear if successful
  458. ----------6005-------------------------------
  459. INT 60 - MDEBUG - GET AND SET MDEBUG FLAGS
  460.     AH = 05h
  461.     DS:SI -> password or a null byte
  462.     BL = new value for the semaphor of MDEBUG
  463.          00h  enable popup of MDEBUG
  464.          else disable popup of MDEBUG
  465. Return: AX = return code
  466.         FFFEh password is invalid
  467.         FFFDh display mode is invalid
  468.        else successful
  469.         BL = old value of the semapor of MDEBUG
  470.         BH = old value of the INT 08h semaphor
  471.             (this semaphor is always reset after this function)
  472. ----------6006-------------------------------
  473. INT 60 - FTP Packet Driver - BASIC FUNC - GET ADDRESS
  474.     AH = 06h
  475.     BX = handle
  476.     ES:DI -> buffer
  477.     CX = length
  478. Return: CF set on error
  479.         DH = error code (see AX=01FFh)
  480.     CF clear if successful
  481.         CX = length    
  482. Note:    copies the local net address associated with the handle into the buffer
  483. ----------6006-------------------------------
  484. INT 60 - MDEBUG - GET PASSWORD STATUS
  485.     AH = 06h
  486. Return: AL = status
  487.         00h password inactive
  488.         01h password active
  489. ----------6007-------------------------------
  490. INT 60 - FTP Packet Driver - BASIC FUNC - RESET INTERFACE
  491.     AH = 07h
  492.     BX = handle
  493. Return: CF set on error
  494.         DH = error code (see AX=01FFh)
  495.     CF clear if successful
  496. ----------600A-------------------------------
  497. INT 60 - FTP Packet Driver 1.09+ - HIGH-PERF FUNC - GET PARAMETERS
  498.     AH = 0Ah
  499. Return: CF set on error
  500.         DH = error code (0Bh) (see AX=01FFh)
  501.     CF clear if successful
  502.         ES:DI -> parameter table (see below)
  503.  
  504. Format of parameter table:
  505. Offset    Size    Description
  506.  00h    BYTE    major revision of packet driver spec driver conforms to
  507.  01h    BYTE    minor revision of packet driver spec
  508.  02h    BYTE    length of this structure in bytes
  509.  03h    BYTE    length of a MAC-layer address
  510.  04h    WORD    maximum transfer unit, including MAC headers
  511.  06h    WORD    buffer size for multicast addr
  512.  08h    WORD    number of receive buffers (one less than back-to-back MTU rcvs)
  513.  0Ah    WORD    number of transmit buffers
  514.  0Ch    WORD    interrupt number to hook for post-EOI processing, 00h=none
  515. ----------600B-------------------------------
  516. INT 60 - FTP Packet Driver 1.09+ - HIGH-PERF FUNC - ASYNCHRONOUS SEND PACKET
  517.     AH = 0Bh
  518.     DS:SI -> buffer
  519.     CX = length of buffer
  520.     ES:DI -> FAR function to call when buffer becomes available
  521. Return: CF set on error
  522.         DH = error code (0Bh,0Ch) (see AX=01FFh)
  523.     CF clear if successful
  524. Note:    unlike function 04h, the buffer is not available for modification as
  525.       soon as the call returns; the buffer may be queued by the driver and
  526.       not processed until later
  527. SeeAlso: AH=04h"Packet Driver"
  528.  
  529. Completion function called with:
  530.     AX = result
  531.         00h copy OK
  532.         nonzero error
  533.     ES:DI -> buffer passed to INT 60/AH=0Bh call
  534. ----------600C-------------------------------
  535. INT 60 - Banyan VINES, 3com - GET STATION ADDRESS
  536.     AH = 0Ch
  537. Return: AL = status
  538.         00h successful
  539.         ES:SI -> 6-byte station address
  540.         02h semaphore service is unavailable
  541. ----------6011-------------------------------
  542. INT 60 - 10-NET, Banyan VINES - LOCK AND WAIT
  543.     AH = 11h
  544.     AL = drive number or 0
  545.     DX = number of seconds to wait
  546.     ES:SI = Ethernet address or 0
  547.     DS:BX -> 31-byte ASCIZ semaphore name
  548. Return: AL = status
  549.         00h successful
  550.         01h timeout
  551.         02h server not responding
  552.         03h invalid semaphore name
  553.         04h semaphore list is full
  554.         05h invalid drive ID
  555.         06h invalid Ethernet address
  556.         07h not logged in
  557.         08h write to network failed
  558.         09h semaphore already logged for this CPU
  559. SeeAlso: AH=12h,AH=13h
  560. ----------6012-------------------------------
  561. INT 60 - 10-NET, Banyan VINES - LOCK
  562.     AH = 12h
  563.     AL = drive number or 00h
  564.     ES:SI = Ethernet address or 0000h:0000h
  565.     DS:BX -> 31-byte ASCIZ semaphore name
  566. Return: AL = status (see also AH=11h)
  567.         01h semaphore currently locked by another PC
  568. Note:    unlike function 11h, this function returns immediately
  569. SeeAlso: AH=11h,AH=13h
  570. ----------6013-------------------------------
  571. INT 60 - 10-NET, Banyan VINES - UNLOCK
  572.     AH = 13h
  573.     AL = drive number or 00h
  574.     ES:SI = Ethernet address or 0000h:0000h
  575.     DS:BX -> 31-byte ASCIZ semaphore name
  576. Return: AL = status (see also AH=11h)
  577.         1 semaphore not locked
  578. SeeAlso: AH=11h,AH=12h
  579. ----------6014-------------------------------
  580. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET RECEIVE MODE
  581.     AH = 14h
  582.     BX = handle
  583.     CX = mode
  584.         01h turn off receiver
  585.         02h receive only packets sent to this interface
  586.         03h mode 2 plus broadcast packets
  587.         04h mode 3 plus limited multicast packets
  588.         05h mode 3 plus all multicast packets
  589.         06h all packets
  590. Return: CF set on error
  591.        DH = error code (01h,08h) (see AX=01FFh)
  592.     CF clear if successful
  593. SeeAlso: AH=15h
  594. ----------6015-------------------------------
  595. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET RECEIVE MODE
  596.     AH = 15h
  597.     BX = handle
  598. Return: CF set on error
  599.         DH = error code (01h) (see AX=01FFh)
  600.     CF clear if successful
  601.         AX = mode    
  602. SeeAlso: AH=14h
  603. ----------6016-------------------------------
  604. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET MULTICAST LIST
  605.     AH = 16h
  606.     ES:DI -> multicast list
  607.     CX = length of list in bytes
  608. Return: CF set on error
  609.         DH = error code (06h,09h,0Eh) (see AX=01FFh)
  610.     CF clear if successful
  611. SeeAlso: AX=17h
  612. ----------6017-------------------------------
  613. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET MULTICAST LIST
  614.     AH = 17h
  615. Return: CF set on error
  616.         DH = error code (06h,09h) (see AX=01FFh)
  617.     CF clear if successful
  618.         ES:DI -> multicast addresses (do not modify)
  619.         CX = bytes of multicast addresses currently in use
  620. SeeAlso: AH=16h
  621. ----------6018-------------------------------
  622. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET STATISTICS
  623.     AH = 18h
  624.     BX = handle
  625. Return: CF set on error
  626.         DH = error code (01h) (see AX=01FFh)
  627.     CF clear if successful
  628.         DS:SI -> statistics (see below)
  629.  
  630. Format of statistics:
  631. Offset    Size    Description
  632.  00h    DWORD    packets in
  633.  04h    DWORD    packets out
  634.  08h    DWORD    bytes in
  635.  0Ch    DWORD    bytes out
  636.  10h    DWORD    errors in
  637.  14h    DWORD    errors out
  638.  18h    DWORD    packets dropped    
  639. ----------6019-------------------------------
  640. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET NETWORK ADDRESS
  641.     AH = 19h
  642.     ES:DI -> address
  643.     CX = length of address
  644. Return: CF set on error
  645.         DH = error code (0Dh,0Eh) (see AX=01FFh)
  646.     CF clear if successful
  647.         CX = length
  648. ----------61---------------------------------
  649. INT 61 - reserved for user interrupt
  650. ----------61---------------------------------
  651. INT 61 - Atari Portfolio - EXTENDED BIOS
  652.    provides subfunctions such as turning off the machine, accessing internal
  653.    variables, and mapping memory cards
  654. SeeAlso: INT 61"Atari"
  655. ----------61---------------------------------
  656. INT 61 - FTP Software PC/TCP - TCP/IP TSR System Call interface
  657.     AH = system call number
  658. Return: AL = basic error
  659.     AH = suberror number
  660. ----------61---------------------------------
  661. INT 61 - Adaptec and OMTI controllers - DRIVE 0 DATA
  662. SeeAlso: INT 60"Adaptec"
  663. ----------610001-----------------------------
  664. INT 61 - Banyan VINES - "Sosock" - OPEN COMMUNICATIONS SOCKET
  665.     AX = 0001h
  666.     DS:DX -> communications control block (function 0001h)
  667. Return: AX = status
  668.         0000h  successful
  669.         0001h  service not installed
  670.         0002h  invalid service ID
  671.         0098h  resource already in use
  672.         009Eh  address family does not exist
  673.         009Fh  socket type does not exist
  674.         00A0h  protocol does not exist
  675.         00A1h  no more sockets available
  676.         00A2h  no more buffer space available
  677. Note:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  678.       interrupt handler is identified by the string "BANV" in the four
  679.       bytes immediately preceding the interrupt handler
  680.  
  681. Format of control block:
  682. Offset    Size    Description
  683.  00h    WORD    0001h
  684.  02h    WORD    pointer to argument block
  685.  04h    WORD    error return code
  686.  06h  4 BYTEs    reserved
  687.  
  688. Format of argument block:
  689. Offset    Size    Description
  690.  00h    WORD    pointer to 2-byte buffer for socket identifier
  691.  02h    WORD    address family
  692.         0003h Banyan
  693.  04h    WORD    socket type
  694.         in address family 0003h
  695.             0001h IPC socket
  696.             0002h SPP socket
  697.  06h    WORD    protocol number
  698.         FFFFh default
  699.  08h    WORD    pointer to 16-byte buffer for socket address
  700.  0Ah    WORD    local port number
  701.         0000h if service should assign transient port number
  702.         0001h to 01FFh well-known port number (assigned by Banyan)
  703.  
  704. Format of IPC port:
  705. Offset    Size    Description
  706.  00h    WORD    address family (always 0003h for Banyan ports)
  707.  04h  4 BYTEs    network number (server's serial number)
  708.  06h    WORD    subnet number  (0001h = server, 8000h-FFFEh = PC)
  709.  08h    WORD    port ID (0001h-01FFh for "well-known" ports)
  710.  0Ah    BYTE    hop count
  711.  0Bh  5 BYTEs    filler
  712. ----------610001-----------------------------
  713. INT 61 - Banyan VINES - "Sosend" - INITIATE OUTPUT EVENT
  714.     AX = 0001h
  715.     DS:DX -> communications control block (function 0002h)
  716. Return: AX = status
  717.         0000h  successful
  718.         0001h  service not installed
  719.         0002h  invalid service ID
  720.         0003h-000Ah reserved for BANV interface errors
  721.         0097h  invalid socket identifier
  722.         009Bh  destination node unreachable
  723.         009Ch  message overflow
  724.         009Dh  destination socket nonexistent
  725.         00A2h  no more buffer space
  726.         00A3h  timeout
  727.         00B1h  resource disconnect
  728. Note:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  729.       interrupt handler is identified by the string "BANV" in the four
  730.       bytes immediately preceding the interrupt handler
  731.  
  732. Format of control block:
  733. Offset    Size    Description
  734.  00h    WORD    0002h
  735.  02h    WORD    pointer to argument block (see below)
  736.  04h    WORD    error return code
  737.         0000h successful
  738.         0097h invalid socket ID
  739.         00A2h no more buffer space
  740.         00A3h timeout event
  741.         00A5h resource not available
  742.         00A6h internal communication failure
  743.         00B1h resource disconnect
  744.  06h  4 BYTEs    reserved
  745.  
  746. Format of argument block:
  747. Offset    Size    Description
  748.  00h    WORD    routine metric
  749.  02h    WORD    error return code
  750.  04h    WORD    socket identifier
  751.  06h    WORD    pointer to send buffer
  752.  08h    WORD    length of send buffer
  753.  0Ah    WORD    flags
  754.         bit 0: async request
  755.             1: reliable message
  756.             3: end of user message received
  757.             4: vectored request (if set, send buffer contains buffer
  758.             descriptors)
  759.             5: connection-specific receive
  760.             6: change to connection-specific receive mode
  761.  0Ch 16 BYTEs    socket address (see below)
  762.  1Ch    WORD    timeout value in multiples of 200ms
  763.  1Eh    WORD    connection identifier
  764.  20h    WORD    type of request
  765.         0001h send message
  766.         0002h establish a virtual connection
  767.         0003h terminate a virtual connection
  768.  
  769. Format of buffer descriptor:
  770. Offset    Size    Description
  771.  00h    WORD    data segment
  772.  02h    WORD    buffer pointer
  773.  04h    WORD    buffer length
  774.  06h    WORD    character count
  775.  
  776. Format of socket address for unreliable datagrams:
  777. Offset    Size    Description
  778.  00h    WORD    0003h      address family
  779.  02h    DWORD    FFFFFFFFh network number
  780.  06h    WORD    FFFFh      subnet number
  781.  08h    WORD          local port number
  782.  0Ah    BYTE    00h-0Fh      hop count
  783.  0Bh  5 BYTEs    0000h      filler
  784. ----------610001-----------------------------
  785. INT 61 - Banyan VINES - "Sorec" - RECEIVE INPUT EVENT NOTIFICATION
  786.     AX = 0001h
  787.     DS:DX -> communications control block (function 0003h)
  788. Return: AX = status
  789.         0000h  successful
  790.         0001h  service not installed
  791.         0002h  invalid service ID
  792.         0003h-000Ah reserved for BANV interface errors
  793.         0097h  invalid socket identifier
  794.         00A2h  no more buffer space
  795.         00A3h  timeout
  796. Note:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  797.       interrupt handler is identified by the string "BANV" in the four
  798.       bytes immediately preceding the interrupt handler
  799.  
  800. Format of control block:
  801. Offset    Size    Description
  802.  00h    WORD    0003h
  803.  02h    WORD    pointer to argument block (see below)
  804.  04h    WORD    error return code
  805.         0000h successful
  806.         0097h invalid socket ID
  807.         00A2h no more buffer space
  808.         00A3h timeout event
  809.         00A5h resource not available
  810.         00A6h internal communication failure
  811.         00B1h resource disconnect
  812.  06h  4 BYTEs    reserved
  813.  
  814. Format of argument block:
  815. Offset    Size    Description
  816.  00h    WORD    character count
  817.  02h    WORD    error return code
  818.  04h    WORD    socket identifier
  819.  06h    WORD    pointer to receive buffer
  820.  08h    WORD    length of receive buffer
  821.  0Ah    WORD    flags
  822.         bit 0: async request
  823.             2: flush receive buffer on overflow
  824.             3: end of user message received
  825.             4: vectored request (if set, receive buffer contains buffer
  826.             descriptors)
  827.             5: connection-specific receive
  828.             6: change to connection-specific receive mode
  829.  0Ch 16 BYTEs    socket address
  830.  1Ch    WORD    timeout value in multiples of 200ms
  831.  1Eh    WORD    connection identifier
  832.  20h    WORD    type of response
  833.         0001h message received
  834.         0002h virtual connection established
  835.         0003h virtual connection terminated
  836.  
  837. Format of buffer descriptor:
  838. Offset    Size    Description
  839.  00h    WORD    data segment
  840.  02h    WORD    buffer pointer
  841.  04h    WORD    buffer length
  842.  06h    WORD    character count
  843. ----------610001-----------------------------
  844. INT 61 - Banyan VINES - "Soclose" - CLOSE A SOCKET
  845.     AX = 0001h
  846.     DS:DX -> communications control block (function 0004h)
  847. Return: AX = status
  848.         0000h  successful
  849.         0001h  service not installed
  850.         0002h  invalid service ID
  851.         0003h-000Ah reserved for BANV interface errors
  852.         0097h  invalid socket identifier
  853. Note:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  854.       interrupt handler is identified by the string "BANV" in the four
  855.       bytes immediately preceding the interrupt handler
  856.  
  857. Format of control block:
  858. Offset    Size    Description
  859.  00h    WORD    0004h
  860.  02h    WORD    pointer to argument block (see below)
  861.  04h    WORD    error return code
  862.  06h  4 BYTEs    reserved
  863.  
  864. Format of argument block:
  865. Offset    Size    Description
  866.  00h    WORD    socket identifier
  867. ----------610001-----------------------------
  868. INT 61 - Banyan VINES - "Sowait" - WAIT FOR ASYNCHRONOUS EVENT COMPLETION
  869.     AX = 0001h
  870.     DS:DX -> communications control block (function 0005h)
  871. Return: AX = status
  872.         0000h  successful
  873.         0001h  service not installed
  874.         0002h  invalid service ID
  875.         0003h-000Ah reserved for BANV interface errors
  876.         00A2h  no more buffer space available
  877.         00A3h  timeout event
  878. Notes:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  879.       interrupt handler is identified by the string "BANV" in the four
  880.       bytes immediately preceding the interrupt handler
  881.     returns results for all asynchronous operations invoked from the
  882.       data segment used for this call
  883.  
  884. Format of control block:
  885. Offset    Size    Description
  886.  00h    WORD    0005h
  887.  02h    WORD    pointer to argument block (see below)
  888.  04h    WORD    error return code
  889.  06h  4 BYTEs    reserved
  890.  
  891. Format of argument block:
  892. Offset    Size    Description
  893.  00h    WORD    pointer to WORD event pointer
  894.  02h    WORD    timeout in multiples of 200ms, FFFFh = infinite
  895. ----------610001-----------------------------
  896. INT 61 - Banyan VINES - "Sosession" - REGISTER APPLICATION WITH COMM SERVICE
  897.     AX = 0001h
  898.     DS:DX -> communications control block (function 0008h)
  899. Return: AX = status
  900.         0000h  successful
  901.         00A2h  no more buffer space available
  902. Note:    BANYAN can use any interrupt from 60h through 66h (default 61h).  The
  903.       Banyan interrupt handler is identified by the string "BANV" in the
  904.       four bytes immediately preceding the interrupt handler
  905.  
  906. Format of control block:
  907. Offset    Size    Description
  908.  00h    WORD    0008h
  909.  02h    WORD    process type
  910.         0001h transient process
  911.         0002h resident process
  912.  04h    WORD    error return code
  913.  06h  4 BYTEs    reserved
  914. ----------610001-----------------------------
  915. INT 61 - Banyan VINES - "Soint" - SET USER COMPLETION FUNCTION
  916.     AX = 0001h
  917.     DS:DX -> communications control block (function 000Bh)
  918. Return: AX = status
  919.         0000h  successful
  920.         0001h  service not installed
  921.         0002h  invalid service ID
  922.         0003h-000Ah reserved for BANV interface errors
  923.         00A2h  no more buffer space available
  924. Notes:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  925.       interrupt handler is identified by the string "BANV" in the four
  926.       bytes immediately preceding the interrupt handler
  927.     FAR user function is invoked with SS,DS, and ES set to segment of
  928.       control block, and with the stack containing
  929.         DWORD    return address
  930.         WORD    argument pointer (sosend or sorec argument block)
  931.         WORD    error return code
  932.             0000h argument pointer is valid
  933.             00A3h timeout
  934.  
  935. Format of control block:
  936. Offset    Size    Description
  937.  00h    WORD    000Bh
  938.  02h    WORD    pointer to argument block (see below)
  939.  04h    WORD    error return code
  940.  06h  2 BYTEs    reserved
  941.  08h    WORD    user CS register
  942.  
  943. Format of argument block:
  944. Offset    Size    Description
  945.  00h    WORD    pointer to user interrupt function    
  946.  02h    WORD    pointer to user stack
  947.  04h    WORD    initial timeout value in multiples of 200ms, FFFFh = infinite
  948. ----------610002-----------------------------
  949. INT 61 - Banyan VINES - 3270 INTERFACE
  950.     AX = 0002h
  951.     BH = function
  952.         00h "pi2reset"  reset 3270/SNA or 3270/BSC driver
  953.         02h "pi2bsc" (3270/BSC only)
  954.         03h    "pi2get"    get information stored in 3270 resident driver
  955.         04h "pi2put"    store information in 3270 resident driver
  956.         05h "pi2gcur"   get current screen position
  957.         07h "pi2sdat"   send data keystroke
  958.         08h "pi2scom"   send command keystroke
  959.         0Ah "pi2field"  get field info for arbitrary screen positions
  960.         0Fh "pi2stat"   get logical unit/device status
  961.         12h "pi2nlus"   determine logical unit/device assignment
  962.         13h "pi2gate"   specifies comm port address to gateway service
  963.         14h "pi2attach" attach a logical unit/device
  964.         15h "pi2sdev"   save logical unit/device info in resident driver
  965.                 (not supported in >3.0)
  966.         16h "pi2gdev"   get device information (not supported in >3.0)
  967.         17h "pi2luinfo" get info about specific logical unit/device
  968.         18h "pi2gerr"   get finer error detail
  969.         19h "pi2dhold"  (3270/SNA only)  holds a 3270 device
  970.         1Ah "pi2shut"   release memory-resident module
  971.         1Ch "pi2sprof"  save profile info in res driver (not supp in >3.0)
  972.         1Dh "pi2gprof"  get prevsly stored profile info (not supp in >3.0)
  973.     DS:CX -> argument block (except BH=00h,1Ah)
  974. Return: AX = status
  975.         0000h successful
  976.         000Bh invalid parameter or data does not fit data area
  977.         000Ch another code path currently active in resident driver
  978.         000Dh operation currently not allowed
  979.         0032h encountered connection disconnect error
  980.         0033h encountered "sosend" completion error
  981.         0034h encountered "sosend" communication error
  982.         0035h attach request refused.  extended error info via "pi2gerr":
  983.             01h resource unavailable
  984.             02h invalid type
  985.             03h version mismatch
  986.             04h invalid logical unit number
  987.             05h error during ARL processing
  988.             06h no access for user
  989.         0071h encountered "sosock" error
  990.         0072h encountered unrecognizable error
  991.         0073h encountered "sowait" error (extended info via "pi2gerr")
  992.         0074h encountered invalid type-of-request on "sowait"
  993.         0075h encountered "sorec" error (extended info via "pi2gerr")
  994.         0076h encountered "sorec" completion error (ext info via "pi2gerr")
  995.         0077h encountered connection request
  996.         0078h encountered unrecognizable data
  997.         0079h encountered unknown connection ID (ext info via "pi2gerr")
  998. Notes:    Either 3270/SNA or 3270/BSC interface may use AX=0002h, depending on
  999.       which is loaded first.  The other interface will use AX=000Ah
  1000.     Status codes greater than 63h indicate an inconsistency in the 3270/SNA
  1001.       or 3270/BSC resident driver, which must be reloaded by the user
  1002.  
  1003. Format of argument block for BH=03h,04h:
  1004. Offset    Size    Description
  1005.  00h    WORD    size of data area (max 256)
  1006.  02h  N BYTEs    data area
  1007.  
  1008. Format of argument block for BH=05h:
  1009. Offset    Size    Description
  1010.  00h    WORD    logical unit/device number
  1011.  02h    WORD    pointer to WORD buffer for cursor index
  1012.  04h    WORD    pointer to BYTE buffer for current field attribute
  1013.  
  1014. Format of argument block for BH=07h:
  1015. Offset    Size    Description
  1016.  00h    WORD    logical unit/device number
  1017.  02h    WORD    ASCII data byte
  1018.  04h    WORD    pointer to WORD count of characters which will need updating
  1019.  
  1020. Format of argument block for BH=08h:
  1021. Offset    Size    Description
  1022.  00h    WORD    logical unit/device number
  1023.  02h    WORD    keystroke
  1024.         0000h Enter
  1025.         0001h Clear
  1026.         0002h PA1
  1027.         0003h PA2
  1028.         0004h PA3
  1029.         0005h PF1
  1030.         ...
  1031.         001Ch PF24
  1032.         001Dh CSELECT (cursor select)
  1033.         001Eh Insert
  1034.         001Fh Delete
  1035.         0020h EOField
  1036.         0021h EINPUT (erase input)
  1037.         0022h Reset
  1038.         0023h Attention
  1039.         0024h SysReq
  1040.         0025h Duplicate
  1041.         0026h Fieldmark
  1042.         0027h Home
  1043.         0028h NextLine
  1044.         0029h Tab
  1045.         002Ah BackTab
  1046.         002Bh cursor up
  1047.         002Ch cursor down
  1048.         002Dh cursor right
  1049.         002Eh cursor left
  1050.         002Fh double cursor right
  1051.         0030h double cursor left
  1052.         0031h PRINT
  1053.         0032h CANCEL
  1054.         0033h Backspace
  1055.  
  1056. Format of argument block for BH=0Ah:
  1057. Offset    Size    Description
  1058.  00h    WORD    logical unit/device number
  1059.  02h    WORD    screen index
  1060.  04h    WORD    pointer to WORD buffer for field length
  1061.  06h    WORD    pointer to WORD buffer for offset in screen of field start
  1062.  
  1063. Format of argument block for BH=0Fh:
  1064. Offset    Size    Description
  1065.  00h    WORD    logical unit/device number
  1066.  02h    WORD    clear mask (clear these bits of status after returning status)
  1067.  04h    WORD    pointer to WORD buffer for status
  1068.         bit 10: status modified
  1069.         bit  9: buffer modified
  1070.         bit  8: set cursor
  1071.         bit  5: sound alarm
  1072.         bits 0,1: size of print line for printer logical units
  1073.             00 unformatted line
  1074.             01 40-character line
  1075.             10 64-character line
  1076.             11 80-character line
  1077.  
  1078. Format of argument block for BH=12h:
  1079. Offset    Size    Description
  1080.  00h    WORD    pointer to WORD buffer for number of logical units or devices
  1081.  02h    WORD    pointer to WORD buffer for version number
  1082.  04h    WORD    pointer to 64-byte buffer for logical unit/device list
  1083.  
  1084. Format of argument block for BH=13h:
  1085. Offset    Size    Description
  1086.  00h 16 BYTEs    communications port address (see AX=0001h#"Sosock")
  1087.  
  1088. Format of argument block for BH=14h:
  1089. Offset    Size    Description
  1090.  00h    WORD    logical unit/device number 
  1091.         0000h attach any free device of the specified type
  1092.  02h    WORD    logical unit/device type
  1093.         (3270/SNA) 01h, 02h, or 03h
  1094.         (3270/BSC) 02h display
  1095.         (3270/BSC) 03h printer
  1096.  04h    WORD    pointer to WORD buffer for attached logical unit/device number
  1097.  
  1098. Format of argument block for BH=16h:
  1099. Offset    Size    Description
  1100.  00h    WORD    pointer to 18-byte buffer for device block (see below)
  1101.         first WORD must be set to desired logical unit/device number
  1102.  
  1103. Format of argument block for BH=17h:
  1104. Offset    Size    Description
  1105.  00h    WORD    logical unit/device number
  1106.  02h    WORD    pointer to information block in caller's DS (see below)
  1107.  
  1108. Format of argument block for BH=18h:
  1109. Offset    Size    Description
  1110.  00h    WORD    pointer to WORD buffer for major error code
  1111.  02h    WORD    pointer to WORD buffer for minor error code
  1112.  
  1113. Format of argument block for BH=19h:
  1114. Offset    Size    Description
  1115.  00h    WORD    logical unit/device number
  1116.  
  1117. Format of argument block for BH=1Ch,1Dh:
  1118. Offset    Size    Description
  1119.  00h    WORD    pointer to profile block in caller's DS (see below)
  1120.  
  1121. Format of device block, argument block for BH=15h:
  1122. Offset    Size    Description
  1123.  00h    WORD    logical unit/device number
  1124.  02h    WORD    logical unit/device type
  1125.  04h    WORD    display model number
  1126.  06h    WORD    numeric checking
  1127.  08h    WORD    status line
  1128.  0Ah    BYTE    unprotected normal field attribute
  1129.  0Bh    BYTE    unprotected intensified field attribute
  1130.  0Ch    BYTE    protected normal field attribute
  1131.  0Dh    BYTE    protected intensified field attribute
  1132.  0Eh    WORD    reserved
  1133.  10h    WORD    printer port number
  1134.  
  1135. Format of information block:
  1136. Offset    Size    Description
  1137.  00h    WORD    device model number
  1138.  02h    DWORD    screen buffer pointer
  1139.  06h    DWORD    status line pointer (see below)
  1140.  0Ah    DWORD    reserved
  1141.  
  1142. Format of status line:
  1143. Offset    Size    Description
  1144.  00h    BYTE    comm line status
  1145.         00h inactive
  1146.         01h active
  1147.  01h    BYTE    activation level
  1148.         01h physical unit activated
  1149.         02h logical unit also activated
  1150.         03h session is bound
  1151.  02h    BYTE    data traffic state
  1152.         00h inactive
  1153.         01h active
  1154.  03h    BYTE    screen ownership
  1155.         00h SLU->PLU sessoin owns screen
  1156.         01h SLU->SSCP session owns screen
  1157.  04h    BYTE    keyboard status
  1158.         00h UNLOCK - ready to accept data
  1159.         01h TIME - aid was struck
  1160.         02h SYSTEM - received response no restore
  1161.         03h FUNCTION - unavailable keyboard function
  1162.         04h INPUT - not currently used
  1163.         05h ENDFIELD - field filled in insert mode
  1164.         06h PROTECTED - attempt to enter in protected field
  1165.         07h NUMERIC - attempt to enter in numeric field
  1166.         08h PROGRAM - error in outbound data stream
  1167.  05h    BYTE    insert mode
  1168.         01h if in insert mode
  1169.  06h    BYTE    numeric
  1170.         01h if current screen buffer is numeric only
  1171.  07h    BYTE    printer status
  1172.         00h printer not assigned
  1173.         01h printer is inactive
  1174.         02h printer error
  1175.         03h currently printing
  1176.         04h printer is busy
  1177.         05h printer is very busy
  1178.  08h    BYTE    printer assignment
  1179.  09h    BYTE    maximum size of network name
  1180.  0Ah  N BYTEs    ASCIZ network name
  1181.     BYTE    maximum size of message window
  1182.       M BYTEs    null-terminated message window
  1183.     BYTE    code set
  1184.         00h EBCDIC
  1185.         01h ASCII
  1186.       M BYTEs    extended attributes
  1187.         01h extended attributes are in effect (stored at screen+1920)
  1188.             each extended attribute specifies
  1189.             bits 0,1: 00=normal, 01=blink, 10=reverse, 11=underscor
  1190.             bits 2-4: 000=default,001=blue,010=red,011=pink,
  1191.                   100=green,101=turquoise,110=yellow,111=white
  1192.     BYTE    extended color
  1193.         01h other than base color is in effect
  1194.  
  1195. Format of profile block:
  1196. Offset    Size    Description
  1197.  00h 64 BYTEs    gateway service name
  1198.  40h 16 BYTEs    gateway comm port address
  1199.  50h    WORD    primary logical unit number
  1200.  52h    WORD    secondary logical unit type
  1201.  54h    WORD    secondary logical unit number
  1202.  56h    WORD    printer assignment
  1203.  58h 50 BYTEs    keyboard definitions filename
  1204. ----------610003-----------------------------
  1205. INT 61 - Banyan VINES - ASYNCHRONOUS TERMINAL EMULATION
  1206.     AX = 0003h
  1207.     DS:BX -> argument block with function number (see below)
  1208. Return: AX = status
  1209.         0000h successful
  1210.         000Bh invalid session ID
  1211.         000Ch session not active
  1212.         000Dh invalid request type
  1213.         000Eh invalid parameters
  1214.         000Fh out of heap space
  1215.         0010h timeout on send
  1216.         0011h Banyan communications error
  1217.         0012h session not waiting for host
  1218.         0013h session is active
  1219.         0014h duplicate suspend session request
  1220.         0015h no session suspended
  1221.         0016h ring data buffer full
  1222.         0017h printer error encountered
  1223.         0018h Banyan communications error
  1224.         0019h unable to make connection
  1225.         001Ah no ring buffer specified at startup
  1226.         001Bh service is down
  1227.         001Ch invalid service name
  1228.         001Dh service is closed
  1229.         001Eh invalid connection name
  1230.         001Fh max session limit reached for service
  1231.         0020h access rights list for connection/dialout does not include
  1232.             this user
  1233.         0021h service not responding
  1234.         0022h missing telephone number
  1235.  
  1236. Format of argument block:
  1237. Offset    Size    Description
  1238.  00h    BYTE    session ID (00h)
  1239.  01h    BYTE    asynchronous interface request number
  1240.         00h initialize user buffer pointer information area
  1241.         01h send to host
  1242.         02h "control monitor"
  1243.         03h "flow control data": freeze/unfreeze display, ring buffer
  1244.         04h end active session
  1245.         05h set session parameter
  1246.         06h get session parameter
  1247.         07h set tab settings
  1248.         08h get tab settings
  1249.         09h refresh emulation screen
  1250.         0Ah suspend session temporarily
  1251.         0Bh restore previously suspended session
  1252.         0Ch set state of scroll lock checking
  1253.         0Dh exit emulation
  1254.         0Eh interrupt on character from host
  1255.         0Fh start a session
  1256.         10h start/stop printing of data received from host
  1257.         11h get file transfer parameters
  1258.         12h get connection information
  1259.         13h start/stop tracing data traffic in session
  1260.         14h interrupt on message from host
  1261.         15h reset error
  1262. ---request=00h---
  1263.  02h    WORD    pointer to info area in caller's current DS
  1264.         Offset    Size    Description
  1265.          00h    WORD    flags
  1266.                 0000h don't read interface's data buffer
  1267.                 0001h read data buffer
  1268.          02h    DWORD    pointer to ring buffer
  1269.          06h    WORD    length of ring buffer
  1270.          08h    WORD    ring buffer offset to last byte read by caller
  1271.          0Ah    DWORD    pointer to WORD containing offset of last byte
  1272.                   in ring buffer filled
  1273.          0Eh    DWORD    pointer to screen buffer
  1274.          12h    DWORD    pointer to field containing cursor position
  1275.          16h    DWORD    pointer to terminal status area (see below)
  1276. ---request=01h---
  1277.  02h    BYTE    type
  1278.         00h ASCII byte
  1279.         01h ASCII string
  1280.         02h terminal function code
  1281.         03h up arrow
  1282.         04h down arrow
  1283.         05h left arrow
  1284.         06h right arrow
  1285.         07h break
  1286.  03h  N BYTEs    type-specific info
  1287.         Offset    Size    Description
  1288.         ---ASCII byte---
  1289.          03h    BYTE    byte to send to host
  1290.         ---ASCII string---
  1291.          03h    WORD    length of string
  1292.          05h    WORD    pointer to string
  1293.         ---terminal function code (VT52/VT100)---
  1294.          03h    BYTE    function code
  1295.                 00h keypad 0
  1296.                 01h keypad 1
  1297.                 ...
  1298.                 09h keypad 9
  1299.                 0Ah keypad -
  1300.                 0Bh keypad ,
  1301.                 0Ch keypad .
  1302.                 0Dh keypad ENTER
  1303.                 0Eh PF1
  1304.                 0Fh PF2
  1305.                 10h PF3
  1306.                 11h PF4
  1307.         ---terminal function code (IBM3101)---
  1308.          03h    BYTE    function code
  1309.                 00h PF1
  1310.                 ...
  1311.                 07h PF8
  1312.                 08h Home
  1313. ---request=02h---
  1314.  02h    BYTE    display flag
  1315.         00h don't display data received from host
  1316.         01h display data
  1317. ---request=03h---
  1318.  02h    BYTE    flow control flag
  1319.         00h allow characters to be put into display or ring buffer
  1320.         01h don't place any more characters into display or ring buffer
  1321. ---request=05h,06h---
  1322.  02h    BYTE    parameter number
  1323.         00h line speed (00h=any, 01h=50, 02h=110, 03h=134.5, 04h=150,
  1324.             05h=300,06h=600,07h=1200,08h=2400,09h=4800, 0Ah=9600)
  1325.         01h parity (00h=none, 01h=odd, 02h=even)
  1326.         02h duplex (00h=full, 01h=half)
  1327.         03h character size (00h=7 bits, 01h=8 bits)
  1328.         04h stop bits (00h=1, 01h=2)
  1329.         05h XON/XOFF flow control (00h=no, 01h=yes)
  1330.         07h intercharacter delay in tenths of a second
  1331.         08h interline delay in tenths of a second
  1332.         09h auto linefeed (00h=no, 01h=yes)
  1333.         0Ah filter control characters (00h=no, 01h=yes)
  1334.         0Bh terminal type (00h=VT100,01h=glassTTY,02h=VT52,03h=IBM3101)
  1335.         0Ch auto wrap (00h=no, 01h=yes)
  1336.         0Dh cursor shape (00h=underscore, 01h=block)
  1337.         0Eh character set (00h=UK, 01h=US ASCII)
  1338.         0Fh printer port (00h=LPT1, 01h=LPT2, 02h=LPT3)
  1339.  03h    BYTE    parameter value (returned for 06h)
  1340. ---request=07h,08h---
  1341.  02h    WORD    pointer to 80-byte buffer in caller's current DS
  1342.           each byte = 00h if no tab, 01h if tab at that position
  1343. ---request=0Ah---
  1344.  02h    WORD    size of session information to be saved
  1345.  04h    WORD    pointer to buffer in caller's DS
  1346. ---request=0Bh---
  1347.  02h    WORD    size of buffer into which session info is restored
  1348.  04h    WORD    pointer to buffer in caller's DS
  1349. ---request=0Ch---
  1350.  02h    BYTE    check_scroll_lock flag
  1351.         00h off
  1352.         01h on (display of host data stopped while ScrollLock on)
  1353. ---request=0Eh,14h---
  1354.  02h    DWORD    pointer to routine to be called (0000h:0000h = don't call)
  1355.  06h    DWORD    stack pointer to use when call is made
  1356. ---request=0Fh---
  1357.  02h    WORD    pointer to information area in caller's current DS
  1358.         Offset    Size    Description
  1359.          00h    WORD    length of service name
  1360.          02h    WORD    pointer to service name in caller's DS
  1361.          04h    BYTE    type of connection
  1362.                 (00h=connection name, 01h=dialout)
  1363.          05h    WORD    length of connection name/telephone number
  1364.          07h    WORD    pointer to connection name/telephone number
  1365. ---request=10h---
  1366.  02h    WORD    print capture flag (00h=off, 01h=on)
  1367. ---request=11h---
  1368.  02h    WORD    pointer to info area in caller's current DS
  1369.         Offset    Size    Description
  1370.          00h    BYTE    protocol flag (00h none, 01h Kermit)
  1371.          01h    BYTE    direction flag (00h send, 01h receive)
  1372.          02h    BYTE    length of null-terminated PC filename
  1373.          03h    DWORD    pointer to null-terminated PC filename
  1374.          07h    BYTE    length of null-terminated host filename
  1375.          08h    DWORD    pointer to null-terminated host filename
  1376. ---request=12h---
  1377.  02h    WORD    pointer to info area in caller's current DS (see below)
  1378.         Offset    Size    Description
  1379.          00h    WORD    length of service name (returned)
  1380.          02h    WORD    pointer to 64-byte buffer for service name
  1381.          04h    BYTE    type of connection
  1382.                 00h connection name
  1383.                 01h dialout
  1384.          05h    WORD    length of connection name/telephone number
  1385.          07h    WORD    pointer to 64-byte buffer for name/telno
  1386.          09h    BYTE    server line number being used (returned)
  1387. ---request=13h---
  1388.  02h    BYTE    trace flag (00h=off, 01h=on)
  1389.  
  1390. Format of terminal status area:
  1391. Offset    Size    Description
  1392.  00h    BYTE    status of session: 4Eh=oNline, 46h=oFfline, 57h=Waiting
  1393.  01h    BYTE    terminal type (00h=VT100, 01h=TTY, 02h=VT52, 03h=IBM3101)
  1394.  02h    BYTE    current keypad mode (VT100,VT52 only)
  1395.         4Eh ("N") numeric mode
  1396.         41h ("A") application mode
  1397.  03h  4 BYTEs    current state of LEDs (VT100 only)
  1398.         00h off
  1399.         01h on
  1400.  07h    WORD    line error count
  1401.  09h    WORD    primary error code
  1402.         0000h no error
  1403.         0001h unable to make connection
  1404.         0002h communications error, restart session
  1405.         0003h async terminal emulation service unavailable
  1406.         0004h lost carrier
  1407.         0005h all matching lines busy
  1408.         0006h no lines defined for connection name
  1409.         0007h no dial lines available on server
  1410.         0008h no matching dial lines available
  1411.         0009h out of heap space
  1412.         000Ah service error encountered
  1413.         000Bh timed out waiting to connect
  1414.         000Ch communications error
  1415.         000Dh communications error
  1416.         000Eh host want file transferred to/from PC
  1417.         000Fh host software changed session parameter
  1418.         0010h host software changed tap settings
  1419.         0011h host software changed LED indicator
  1420.         0012h host software changed display background (secondary error
  1421.             code 00h for white on black, 01h for black on white)
  1422.         0013h host software changed display option (secondary error
  1423.             code 00h for off, 01h for on)
  1424.         0014h communications error
  1425.         0015h communications error
  1426.         0016h unable to make connection
  1427.         0017h unable to make connection
  1428.  0Bh    WORD    secondary error code
  1429. ----------610004-----------------------------
  1430. INT 61 - Banyan VINES - GET SERVER SERIAL NUMBER
  1431.     AX = 0004h
  1432.     DS:DX -> request block (function 0008h)
  1433. Return: AX = status
  1434.         0000h server ID returned in request block
  1435.         000Fh invalid drive
  1436.         0015h drive not ready
  1437.  
  1438. Format of request block:
  1439. Offset    Size    Description
  1440.  00h    WORD    0008h
  1441.  02h    WORD    drive number (0=default, 1=A, ...)
  1442.  04h  6 BYTEs    buffer for server ID
  1443. ----------610005-----------------------------
  1444. INT 61 - Banyan VINES - PRINTER CONTROL
  1445.     AX = 0005h
  1446.     DS:DX -> request block
  1447. Return: AX = status
  1448.         0000h successful
  1449.         0001h network software not installed or incompatible
  1450.  
  1451. Format of request block:
  1452. Offset    Size    Description
  1453.  00h    WORD    function
  1454.         0201h "endspool" all data for a print job has been sent
  1455.         0205h "getactive" get currently active printer port
  1456.  02h    WORD    number of active port (1-3)
  1457.  04h    WORD    ??? (0 for func 0201h, 3 for func 0205h)
  1458.  06h    WORD    0000h
  1459. ----------610007BX0002-----------------------
  1460. INT 61 - Banyan VINES - GET PORTS FOR A SERVICE
  1461.     AX = 0007h
  1462.     BX = 0002h
  1463.     DS:DX -> StreetTalk service name
  1464.     DS:DI -> port record block (see below)
  1465. Return: AX = status
  1466.         0000h successful
  1467.         0001h PC network software not installed or incompatible
  1468.         03E9h incorrect name syntax
  1469.         03EAh organization name too long
  1470.         03EBh group name too long
  1471.         03ECh item name too long
  1472.         03EDh StreetTalk name too long
  1473.         03F3h organization not found
  1474.         03F4h group not found
  1475.         03F5h StreetTalk name not found
  1476.         03F8h not a StreetTalk name
  1477.         040Dh appropriate StreetTalk name unavailable
  1478.  
  1479. Format of port record block:
  1480. Offset    Size    Description
  1481.  00h    WORD    number of 17-byte elements
  1482.  02h 17 BYTEs    element (byte 00h = input port type, bytes 01h-10h = port)
  1483.         (see AX=0001h#"Sosock" for port format)
  1484. ----------610007BX0004-----------------------
  1485. INT 61 - Banyan VINES - VERIFY EXISTENCE OF NAME AND RETURN CANONICAL FORM
  1486.     AX = 0007h
  1487.     BX = 0004h
  1488.     DS:DX -> StreetTalk name of service
  1489.     DS:DI -> port record block (see below)
  1490. Return: AX = status
  1491.         0000h successful
  1492.         0001h PC network software not installed or incompatible
  1493.         03E9h incorrect name syntax
  1494.         03EAh organization name too long
  1495.         03EBh group name too long
  1496.         03ECh item name too long
  1497.         03EDh StreetTalk name too long
  1498.         03F3h organization not found
  1499.         03F4h group not found
  1500.         03F5h StreetTalk name not found
  1501.         03F8h not a StreetTalk name
  1502.         0409h modify access denied
  1503.         040Dh appropriate StreetTalk name unavailable
  1504.  
  1505. Format of port record block:
  1506. Offset    Size    Description
  1507.  00h    WORD    number of 17-byte elements
  1508.  02h 17 BYTEs    element: byte 00h = input port type, 01h-10h = port
  1509.         (see AX=0001h#"Sosock" for port format)
  1510. ----------610007BX0005-----------------------
  1511. INT 61 - Banyan VINES - GET USER NAME
  1512.     AX = 0007h
  1513.     BX = 0005h
  1514.     DS:DX -> 64-byte buffer for user's StreetTalk name
  1515. Return: AX = status
  1516.         0000h successful
  1517.         0001h network software not installed or incompatible
  1518. Note:    if no user logged in, first byte of returned name will be 00h
  1519. ----------610007BX0006-----------------------
  1520. INT 61 - Banyan VINES - TRANSLATE ERROR INTO ASCII STRING
  1521.     AX = 0007h
  1522.     BX = 0006h
  1523.     SI = error code (>100)
  1524.     DS:DX -> 80-byte buffer for error text
  1525. Return: AX = status
  1526.         0000h successful
  1527.         0001h network software not installed or incompatible        
  1528. ----------610007BX0007-----------------------
  1529. INT 61 - Banyan VINES - VERIFY EXISTENCE OF NAME AND RETURN CANONICAL FORM
  1530.     AX = 0007h
  1531.     BX = 0007h
  1532.     DS:DX -> NiceName block (see below)
  1533. Return: AX = status
  1534.         0000h successful
  1535.         0001h PC network software not installed or incompatible
  1536.         03E9h incorrect name syntax
  1537.         03EAh organization name too long
  1538.         03EBh group name too long
  1539.         03ECh item name too long
  1540.         03EDh StreetTalk name too long
  1541.         03F3h organization not found
  1542.         03F4h group not found
  1543.         03F5h StreetTalk name not found
  1544.         03F8h not a StreetTalk name
  1545.         040Dh appropriate StreetTalk name unavailable
  1546. SeeAlso: AX=0007h/BX=0008h
  1547.  
  1548. Format of NiceName block:
  1549. Offset    Size    Description
  1550.  00h    WORD    type of name
  1551.         0064h organization
  1552.         00C8h group
  1553.         012Ch item
  1554.  02h    WORD    pointer to ASCIZ input name
  1555.  04h    WORD    pointer to 64-byte buffer for output name
  1556. ----------610007BX0008-----------------------
  1557. INT 61 - Banyan VINES - ENUMERATE StreetTalk NAMES
  1558.     AX = 0007h
  1559.     BX = 0008h
  1560.     DS:DX -> enumerate block (see below)
  1561. Return: AX = status
  1562.         0000h successful
  1563.         0411h all matching names have been returned
  1564.         0412h some groups unavailable, all available matches returned
  1565. Note:    each program using this call should continue until a nonzero status
  1566.       is returned; otherwise, some resources will not be freed for several
  1567.       hours
  1568. SeeAlso: AX=0007h/BX=0007h
  1569.  
  1570. Format of enumerate block:
  1571. Offset    Size    Description
  1572.  00h    WORD    return code
  1573.  02h    WORD    pointer to pattern string
  1574.  04h    WORD    enumerate type
  1575.         0064h organization
  1576.         00C8h group
  1577.         012Ch item
  1578.  06h    WORD    enumerate class
  1579.         0000h unspecified (return all matching items)
  1580.         0001h user names
  1581.         0002h service names
  1582.         0003h list names
  1583.         0004h nicknames
  1584.  08h    WORD    pointer to category criteria block (see below) or 0
  1585.  0Ah    WORD    pointer to array of 64-byte returned names
  1586.  0Ch    WORD    number of names returned
  1587.  0Eh  6 BYTEs    reserved for subsequent enumerated calls (set to zeros on first
  1588.           call)
  1589.  
  1590. Format of category criteria block:
  1591. Offset    Size    Description
  1592.  00h    WORD    exclude flag
  1593.         0000h return only items with the specified categories
  1594.         0001h return all items except those with the given categories
  1595.  02h    WORD    number of categories
  1596.  04h    WORD    category 1 value
  1597.  06h    WORD    category 2 value
  1598.         ...
  1599.  
  1600. Values for common service categories:
  1601.  0002h file service
  1602.  0003h print service
  1603.  0004h mail service
  1604.  0005h StreetTalk
  1605.  0006h time service
  1606.  0008h semaphore service
  1607.  0009h 3270/SNA service
  1608.  000Ah asynchronous terminal emulation service
  1609.  000Ch NETBIOS service
  1610.  000Dh PC-based service
  1611. ----------610008BX0002-----------------------
  1612. INT 61 - Banyan VINES - POST MESSAGE ON LOCAL DISPLAY
  1613.     AX = 0008h
  1614.     BX = 0002h
  1615.     CX = flags
  1616.         bit 0: message will remain on screen until user presses ^X
  1617.         bit 1: ring bell after displaying message
  1618.         bit 2: blink
  1619.     DS:DX -> ASCIZ string to display (only first 80 chars used)
  1620. Return: AX = status
  1621.         0000h successful
  1622.         000Bh message display function currently busy
  1623.         000Ch message queue full
  1624. Note:    queues up to three messages to be displayed on the bottom line
  1625. ----------610008BX0003-----------------------
  1626. INT 61 - Banyan VINES - INTERCEPT VINES 25th-LINE MESSAGES AT LOCAL PC
  1627.     AX = 0008h
  1628.     BX = 0003h
  1629.     DS:DX -> request block
  1630. Return: AX = status
  1631.         0000h successful
  1632.         0001h network software not installed or incompatible
  1633. Notes:    message handler should not call BIOS or DOS functions, and should
  1634.       either call next handler or simply return
  1635.     to stop intercepting messages, set prev and next request blocks to
  1636.       point at each other
  1637.  
  1638. Format of request block:
  1639. Offset    Size    Description
  1640.  00h    DWORD    pointer to user-written message handler
  1641.  04h    DWORD    pointer to next request block (filled in by VINES)
  1642.  08h    DWORD    pointer to previous request block (filled in by VINES)
  1643.  0Ch    DWORD    pointer to message storage area (filled by VINES) (see below)
  1644.  
  1645. Format of message storage area:
  1646. Offset    Size    Description
  1647.  00h 16 BYTEs    IPC port of message sender (see AX=0001h#"Sosock")
  1648.  10h    BYTE    message flags
  1649.  11h    WORD    reserved
  1650.  13h    BYTE    length of message
  1651.  14h 80 BYTEs    message text
  1652. ----------61000A-----------------------------
  1653. INT 61 - Banyan VINES - SECONDARY 3270 INTERFACE
  1654.     AX = 000Ah
  1655. Notes:    either 3270/SNA or 3270/BSC interface will use AX=000Ah, depending on
  1656.       which is loaded second.  The first interface loaded will use AX=0002h
  1657. SeeAlso: INT 61/AX=0002h
  1658. ----------6101-------------------------------
  1659. INT 61 - Banyan VINES - CHECK SERVICE
  1660.     AH = 01h
  1661.     AL = service ID
  1662.         01h communications
  1663.         02h primary 3270 emulation
  1664.         03h async terminal emulation
  1665.         04h file deflectoin
  1666.         07h StreetTalk
  1667.         08h environment
  1668.         0Ah secondary 3270 emulation
  1669.         0Bh semaphore service
  1670.         0Ch 3270 emulation active status
  1671.         0Dh 3270 keyboard interrupt simulator
  1672. Return: AX = status
  1673.         0000h installed
  1674.         0001h not installed
  1675.         0002h invalid ID
  1676. ----------6102-------------------------------
  1677. INT 61 - Banyan VINES - GET REVISION NUMBER
  1678.     AH = 02h
  1679.     DS:DX -> 2-byte buffer for result
  1680. Return: AX = 0000h installed
  1681.         DS:DX buffer contains revision number as
  1682.         10000d * major_ver + 100d * minor_ver + patch_revision
  1683. ----------61---------------------------------
  1684. INT 61 - Sangoma CCIP (CCPOP 3270 resident module) INTERFACE
  1685.     BX:DX -> control block
  1686. ----------62---------------------------------
  1687. INT 62 - reserved for user interrupt
  1688. ----------62---------------------------------
  1689. INT 62 - Adaptec and OMTI controllers - DRIVE 0 DATA
  1690. SeeAlso: INT 61"Adaptec"
  1691. ----------62---------------------------------
  1692. INT 62 - MS SQL Server/Sybase DBLIBRARY interface
  1693. ----------6201-------------------------------
  1694. INT 62 - Cswitch - GIVE UP REST OF TIME-SLICE
  1695.     AH = 01h
  1696. Note:    Cswitch is a set of multitasking functions by Herb Rose
  1697. SeeAlso: AH=05h,AH=06h
  1698. ----------6202-------------------------------
  1699. INT 62 - Cswitch - WAIT FOR SEMAPHORE
  1700.     AH = 02h
  1701.     DX = semaphore number (0-63)
  1702. Return: AX = FFFFh bad semaphore number
  1703.          else  success
  1704. SeeAlso: AH=03h,AH=04h
  1705. ----------6203-------------------------------
  1706. INT 62 - Cswitch - CHECK SEMAPHORE
  1707.     AH = 03h
  1708.     DX = semaphore number (0-63)
  1709. Return: AX = FFFFh not owned
  1710.          else  owned
  1711. SeeAlso: AH=02h,AH=04h
  1712. ----------6204-------------------------------
  1713. INT 62 - Cswitch - TRIGGER SEMAPHORE
  1714.     AH = 04h
  1715.     DX = semaphore number (0-63)
  1716. Return: AX = FFFFh bad semaphore number
  1717.          else  success
  1718. SeeAlso: AH=02h,AH=03h
  1719. ----------6205-------------------------------
  1720. INT 62 - Cswitch - SLEEP
  1721.     AH = 05h
  1722.     BX = seconds to sleep
  1723. SeeAlso: AH=01h,AH=06h,AH=08h
  1724. ----------6206-------------------------------
  1725. INT 62 - Cswitch - SUSPEND
  1726.     AH = 06h
  1727. SeeAlso: AH=05h,AH=08h
  1728. ----------6207-------------------------------
  1729. INT 62 - Cswitch - SPAWN
  1730.     AH = 07h
  1731.     ES:BX -> function address to start executing at
  1732.     CX = priority (1-10)
  1733. Return: AX = FFFDh  no free memory control blocks
  1734.        = FFFEh  no free task control blocks
  1735.        = FFFFh  not enough memory to create new task stack
  1736.        = >0        the tcb number of the new task, indicating no error
  1737. SeeAlso: AH=0Fh,AH=10h
  1738. ----------6208-------------------------------
  1739. INT 62 - Cswitch - WAKE UP TASK
  1740.     AH = 08h
  1741.     BX = tcb identifier
  1742. SeeAlso: AH=05h,AH=06h
  1743. ----------6209-------------------------------
  1744. INT 62 - Cswitch - SET PRIORITY
  1745.     AH = 09h
  1746.     BX = new base priority (1-10)
  1747. Note:    the lower the priority is numerically, the more often the task will run
  1748. ----------620A-------------------------------
  1749. INT 62 - Cswitch - TEST MESSAGE QUEUE
  1750.     AH = 0Ah
  1751.     DX = queue number (0-63)
  1752. Return: AX = FFFFh bad queue number
  1753.        = 0000h nothing on queue
  1754.          else  number of bytes in first message in queue
  1755. SeeAlso: AH=0Bh,AH=0Ch
  1756. ----------620B-------------------------------
  1757. INT 62 - Cswitch - SEND MESSAGE
  1758.     AH = 0Bh
  1759.     CX = number of bytes to write
  1760.     DS:SI -> buffer
  1761.     DX = queue number (0-63)
  1762. Return: AX = FFFEh triggered by something arriving, redo the call
  1763.        = FFFFh bad queue number
  1764.        = 0000h no message was on queue
  1765.          else  number of bytes in message
  1766. SeeAlso: AH=0Ah,AH=0Ch
  1767. ----------620C-------------------------------
  1768. INT 62 - Cswitch - READ MESSAGE
  1769.     AH = 0Ch
  1770.     CX = number of bytes to read
  1771.     DS:SI -> buffer
  1772.     DX = queue number (0-63)
  1773. Return: AX = FFFFh bad queue number
  1774.          else  number of bytes transferred
  1775. SeeAlso: AH=0Ah,AH=0Bh
  1776. ----------620D-------------------------------
  1777. INT 62 - Cswitch - DON'T ALLOW TASK TO BE SWAPPED OUT
  1778.     AH = 0Dh
  1779. SeeAlso: AH=0Eh
  1780. ----------620E-------------------------------
  1781. INT 62 - Cswitch - ALLOW TASK TO BE SWAPPED OUT
  1782.     AH = 0Eh
  1783. SeeAlso: AH=0Dh
  1784. ----------620F-------------------------------
  1785. INT 62 - Cswitch - LOAD AND RUN PROGRAM FROM DISK
  1786.     AH = 0Fh
  1787.     ES:BX -> command line
  1788.     CX = priority (1-10)
  1789.     DX = background flag
  1790.        = != 0000h  allows loading to EMS
  1791. Return: AX = 0000h task loader queue is full
  1792.        = 0001h  no error
  1793. SeeAlso: AH=07h,AH=10h,AH=13h
  1794. ----------6210-------------------------------
  1795. INT 62 - Cswitch - TERMINATE SPAWNED PROGRAM
  1796.     AH = 10h
  1797. SeeAlso: AH=07h,AH=0Fh
  1798. ----------6211-------------------------------
  1799. INT 62 - Cswitch - GET TCB INFORMATION
  1800.     AH = 11h
  1801.     ES:BX -> a pointer which will be set to the tcb address
  1802. Return: AX = tcb indentifier
  1803. SeeAlso: AH=12h
  1804. ----------6212-------------------------------
  1805. INT 62 - Cswitch - GET TCB ADDRESS
  1806.     AH = 12h
  1807.     ES:BX -> a pointer which will be set to the tcb table address
  1808. Return: AX = tcb indentifier
  1809. SeeAlso: AH=11h
  1810. ----------6213-------------------------------
  1811. INT 62 - Cswitch - CHECK STATUS OF PREVIOUS LOAD_TASK
  1812.     AH = 13h
  1813. Return: AX = FFFCh no Memory Control Blocks available
  1814.        = FFFDh no TCBs available
  1815.        = FFFEh insufficient memory
  1816.        = FFFFh cannot open file
  1817.        = 0000h load in progress (not done yet)
  1818.          else  tcb indentifier
  1819. SeeAlso: AH=0Fh
  1820. ----------63---------------------------------
  1821. INT 63 - reserved for user interrupt
  1822. ----------63---------------------------------
  1823. INT 63 - Adaptec and OMTI controllers - DRIVE 0 DATA
  1824. SeeAlso: INT 62"Adaptec"
  1825. ----------63---------------------------------
  1826. INT 63 - Oracle SQL Protected Mode Executive - ???
  1827. ----------63---------------------------------
  1828. INT 63 - 4+Power FLOPPY CONTROLLER - ORIGINAL INT 13/40
  1829.    the "4+Power" quad floppy controller BIOS hooks INT 13 (or INT 40 if INT 13
  1830.    has been moved there) and places the old value here
  1831. ----------64---------------------------------
  1832. INT 64 - reserved for user interrupt
  1833. ----------64---------------------------------
  1834. INT 64 - Adaptec controllers - DRIVE 1 DATA
  1835. SeeAlso: INT 60"Adaptec"
  1836. ----------64---------------------------------
  1837. INT 64 - Oracle SQL Protected Mode Executive - ???
  1838. ----------64---------------------------------
  1839. INT 64 - Novell NetWare to v2.0a - LOW-LEVEL API
  1840. Note:    equivalent to INT 7A for NetWare versions through 2.0a only; later
  1841.       versions do not use this interrupt for IPX/SPX access, instead
  1842.       getting an entry point from INT 2F/AX=7A00h
  1843. SeeAlso: INT 2F/AX=7A00h,INT 7A"Novell"
  1844. ----------64---------------------------------
  1845. INT 64 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  1846. ----------64---------------------------------
  1847. INT 64 - Extended Batch Language v3.14+
  1848.     AH = function
  1849.         00h to 5Fh chained to previous handler
  1850.         60h to 6Ch reserved, return immediately
  1851.         80h to FFh chained to previous handler
  1852.         6Dh (v4.01+) insert tone in queue
  1853.         AL = ???
  1854.         CX = frequency in Hertz
  1855.         DL = duration in clock ticks
  1856.         Return: AL = 00h if note stored
  1857.                = 01h if no room to store
  1858.         6Eh clear ??? counter/flag
  1859.         6Fh return counter/flag that AH=6Eh clears
  1860.         70h ???
  1861.         AL = ???
  1862.         71h ???
  1863.         AL = ???
  1864.         72h ???
  1865.         73h insert byte at end of keyboard buffer
  1866.         AL = byte to insert
  1867.         Return: AL = 00h if byte inserted
  1868.                = 01h if no room to store
  1869.         74h insert byte at front of keyboard buffer
  1870.         AL = byte to insert
  1871.         Return: AL = 00h if byte inserted
  1872.                = 01h if no room to store
  1873.         75h ???
  1874.         76h get keyboard "stack" status
  1875.         AL = 'K' if kbd read will read physical keyboard
  1876.              'S' if it will read EBL internal keyboard buffer
  1877.         AH = ???
  1878.         77h clear internal keyboard buffer
  1879.         78h ???
  1880.         AL = ???
  1881.         79h ???
  1882.         7Ah ???
  1883.         AL = ???
  1884.         7Bh ???
  1885.         AL = ???
  1886.         7Ch ???
  1887.         AL = ???
  1888.         7Dh ???
  1889.         AL = ???
  1890.         7Eh clear buffer for ???
  1891.         7Fh installation check
  1892.         Return: CX = version in BCD
  1893.             DI = segment of ???
  1894.             BX = segment of next program's PSP???
  1895. Notes:    Extended Batch Language is a batch-file enhancer by Seaware
  1896.     the chaining does not check whether the interrupt had been hooked
  1897.       before, so if you try to chain when the previous vector was 
  1898.       0000h:0000h, you'll be in trouble
  1899.     functions 72h and 7Ah-7Dh appear to be interfaces to the optional
  1900.       floating-point and extended function packages
  1901. ----------65---------------------------------
  1902. INT 65 - reserved for user interrupt
  1903. ----------65---------------------------------
  1904. INT 65 - Adaptec controllers - DRIVE 1 DATA
  1905. SeeAlso: INT 64"Adaptec"
  1906. ----------65---------------------------------
  1907. INT 65 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  1908. ----------65---------------------------------
  1909. INT 65 - FTP Software NDIS-Packet Driver adapter - POST PROCESSING INTERRUPT
  1910. ----------65---------------------------------
  1911. INT 65 - SD.COM v6.2
  1912.    The unregistered version of SD62.COM uses the low byte of this vector to
  1913.    count the number of invocations, displaying a registration reminder each
  1914.    time after the 20th use.
  1915. ----------65---------------------------------
  1916. INT 65 - Ad Lib SOUND.COM - INTERFACE
  1917.     SI = function number (see separate entries for details on several)
  1918.        = 0000h Init
  1919.        = 0002h RelTimeStart
  1920.        = 0003h SetState
  1921.        = 0004h GetState
  1922.        = 0005h Flush
  1923.        = 0006h SetMode
  1924.        = 0007h GetMode
  1925.        = 0008h SetRelVolume
  1926.        = 0009h SetTempo
  1927.        = 000Ah SetTranspose
  1928.        = 000Bh GetTranspose
  1929.        = 000Ch SetActVoice
  1930.        = 000Dh GetActVoice
  1931.        = 000Eh PlayNoteDel
  1932.        = 000Fh PlayNote
  1933.        = 0010h SetTimbre
  1934.        = 0011h SetPitch
  1935.        = 0012h SetTickBeat
  1936.        = 0013h NoteOn
  1937.        = 0014h NoteOff
  1938.        = 0015h Timbre
  1939.        = 0016h SetPitchBend
  1940.        = 0017h WaveForm
  1941.     ES:BX -> arguments
  1942. Note:    the installation check consists of checking for the signature block
  1943.       immediately preceding the interrupt handler (see below)
  1944.  
  1945. Format of signature block:
  1946. Offset    Size    Description
  1947.  00h    WORD    version number
  1948.  02h 19 BYTEs    "SOUND-DRIVER-AD-LIB"
  1949.  15h    BYTE    01h
  1950.  16h    BYTE    01h
  1951.  17h    BYTE    00h
  1952. ----------65----SI0000-----------------------
  1953. INT 65 - Ad Lib SOUND.COM - INITIALIZE (RESET)
  1954.     SI = 0000h
  1955. ----------65----SI0003-----------------------
  1956. INT 65 - Ad Lib SOUND.COM - SET STATE
  1957.     SI = 0003h
  1958.     ES:BX -> WORD state = 0000h disabled 
  1959.                 = 0001h enabled
  1960. SeeAlso: SI=0004h
  1961. ----------65----SI0004-----------------------
  1962. INT 65 - Ad Lib SOUND.COM - GET STATE
  1963.     SI = 0004h
  1964. Return: AX = 0000h all done playing sounds
  1965.        = else  still playing sounds
  1966. SeeAlso: SI=0003h
  1967. ----------65----SI0006-----------------------
  1968. INT 65 - Ad Lib SOUND.COM - SET MODE
  1969.     SI = 0006h
  1970.     ES:BX -> WORD mode = 0000h melodic
  1971.                = 0001h percussive
  1972. SeeAlso: SI=0007h
  1973. ----------65----SI0007-----------------------
  1974. INT 65 - Ad Lib SOUND.COM - GET MODE
  1975.     SI = 0007h
  1976. Return: AX = 0000h melodic
  1977.        = 0001h percussive
  1978. SeeAlso: SI=0006h
  1979. ----------65----SI000C-----------------------
  1980. INT 65 - Ad Lib SOUND.COM - SET ACTIVE VOICE
  1981.     SI = 000Ch
  1982.     ES:BX -> WORD voice = 0000h to 0008h
  1983. SeeAlso: SI=000Dh
  1984. ----------65----SI000D-----------------------
  1985. INT 65 - Ad Lib SOUND.COM - GET ACTIVE VOICE
  1986.     SI = 000Dh
  1987. Return: AX = voice (0000h to 0008h)
  1988. SeeAlso: SI=000Ch
  1989. ----------66---------------------------------
  1990. INT 66 - reserved for user interrupt
  1991. ----------66---------------------------------
  1992. INT 66 - Adaptec controllers - DRIVE 1 DATA
  1993. SeeAlso: INT 65"Adaptec"
  1994. ----------66---------------------------------
  1995. INT 66 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  1996. ----------66FFFBBXFFFB-----------------------
  1997. INT 66 - MicroHelp Stay-Res Plus - ???
  1998.     AX = FFFBh
  1999.     BX = FFFBh
  2000.     ???
  2001. Return: ???
  2002. SeeAlso: AX=FFFEh
  2003. ----------66FFFEBXFFFE-----------------------
  2004. INT 66 - MicroHelp Stay-Res/Stay-Res Plus - UNINSTALL
  2005.     AX = FFFEh
  2006.     BX = FFFEh
  2007. Return: only if unsuccessful
  2008. Notes:    installation check is for the interrupt handler to begin with the bytes
  2009.       FBh 9Ch or 9Ch FAh, and the program name (not case-sensitive) to
  2010.       appear at offset 0005h (older versions) or the offset returned by
  2011.       AX=FFFFh/BX=FFF0h in the interrupt handler segment.
  2012.     Programs which use Stay-Res include ThesPlus (program name "THESPLUS")
  2013.       and Personal Calendar (program name "CAL") by Paul Mun~oz-Colman.
  2014. SeeAlso: AX=FFFBh,AX=FFFFh
  2015. ----------66FFFFBXFFF0-----------------------
  2016. INT 66 - MicroHelp Stay-Res Plus - FIND PROGRAM NAME
  2017.     AX = FFFFh
  2018.     BX = FFF0h
  2019. Return: DI = offset of program name in interrupt handler segment
  2020. SeeAlso: AX=FFFBh,AX=FFFEh
  2021. ----------660688-----------------------------
  2022. INT 66 - John W. Ratcliff (The IBM Digitized Sound Package)
  2023.     AX = 0688h
  2024.     ???
  2025. Return: ???
  2026. ----------660689-----------------------------
  2027. INT 66 - John W. Ratcliff (The IBM Digitized Sound Package)
  2028.     AX = 0689h
  2029.     ???
  2030. Return: ???
  2031. ----------67---------------------------------
  2032. INT 67 - Adaptec controllers - DRIVE 1 DATA
  2033. SeeAlso: INT 66"Adaptec"
  2034. ----------6700-------------------------------
  2035. INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE AND WAIT
  2036.     AH = 00h
  2037.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  2038. Return: AL = status
  2039.         00h successful
  2040.         01h invalid function
  2041.         02h semaphore already locked
  2042.         03h unable to lock semaphore
  2043.         04h semaphore space exhausted
  2044.     AH = semaphore owner if status=02h
  2045. SeeAlso: AH=01h,AH=02h,INT 7F/AH=00h
  2046. ----------6701-------------------------------
  2047. INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE
  2048.     AH = 01h
  2049.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  2050. Return: AL = status (see AH=00h)
  2051.     AH = semaphore owner if status=02h
  2052. SeeAlso: AH=00h,AH=02h,INT 7F/AH=01h"Alloy"
  2053. ----------6702-------------------------------
  2054. INT 67 - PC-NET, Alloy NTNX - UNLOCK SEMAPHORE
  2055.     AH = 02h
  2056.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  2057. Return: AL = status (see AH=00h)
  2058.     AH = semaphore owner if status=02h
  2059. SeeAlso: AH=00h,AH=01h,INT 7Fh/AH=02h
  2060. ----------6740-------------------------------
  2061. INT 67 - LIM EMS - GET MANAGER STATUS
  2062.     AH = 40h
  2063. Return: AH = status
  2064.         00h successful
  2065.         80h internal error
  2066.         81h hardware malfunction
  2067.         84h undefined function requested by application
  2068. Note:    this call can be used only after establishing that the EMS driver is in
  2069.       fact present
  2070. ----------6741-------------------------------
  2071. INT 67 - LIM EMS - GET PAGE FRAME SEGMENT
  2072.     AH = 41h
  2073. Return: AH = 00h function successful
  2074.         BX = segment of page frame
  2075.     AH = error code (see AH=40h)
  2076. ----------6742-------------------------------
  2077. INT 67 - LIM EMS - GET NUMBER OF PAGES
  2078.     AH = 42h
  2079. Return: AH = 00h function successful
  2080.         BX = number of unallocated pages
  2081.         DX = total number of pages
  2082.     AH = error code (see AH=40h)
  2083. ----------6743-------------------------------
  2084. INT 67 - LIM EMS - GET HANDLE AND ALLOCATE MEMORY
  2085.     AH = 43h
  2086.     BX = number of logical pages to allocate
  2087. Return: AH = status
  2088.         00h function successful
  2089.         DX = handle
  2090.         80h internal error
  2091.         81h hardware malfunction
  2092.         84h undefined function requested
  2093.         85h no more handles available
  2094.         87h more pages requested than physically exist
  2095.         88h more pages requested than currently available
  2096.         89h zero pages requested
  2097. SeeAlso: AH=45h
  2098. ----------6744-------------------------------
  2099. INT 67 - LIM EMS - MAP MEMORY
  2100.     AH = 44h
  2101.     AL = physical page number (0-3)
  2102.     BX = logical page number
  2103.     DX = handle
  2104. Return: AH = status
  2105.         00h function successful
  2106.         80h internal error
  2107.         81h hardware malfunction
  2108.         83h invalid handle
  2109.         84h undefined function requested
  2110.         8Ah invalid logical page number
  2111.         8Bh illegal physical-page number
  2112. SeeAlso: AH=69h
  2113. ----------6745-------------------------------
  2114. INT 67 - LIM EMS - RELEASE HANDLE AND MEMORY
  2115.     AH = 45h
  2116.     DX = EMM handle
  2117. Return: AH = status
  2118.         00h successful
  2119.         80h internal error
  2120.         81h hardware malfunction
  2121.         83h invalid handle
  2122.         84h undefined function requested
  2123.         86h error in save or restore of mapping context
  2124. SeeAlso: AH=43h
  2125. ----------6746-------------------------------
  2126. INT 67 - LIM EMS - GET EMM VERSION
  2127.     AH = 46h
  2128. Return: AH = status
  2129.         00h successful
  2130.         AL = EMM version number
  2131.         80h internal error
  2132.         81h hardware malfunction
  2133.         84h undefined function requested
  2134. ----------6747-------------------------------
  2135. INT 67 - LIM EMS - SAVE MAPPING CONTEXT
  2136.     AH = 47h
  2137.     DX = handle
  2138. Return: AH = status
  2139.         00h successful
  2140.         80h internal error
  2141.         81h hardware malfunction
  2142.         83h invalid handle
  2143.         84h undefined function requested
  2144.         8Ch page-mapping hardware state save area is full
  2145.         8Dh save of mapping context failed
  2146. SeeAlso: AH=47h
  2147. ----------6748-------------------------------
  2148. INT 67 - LIM EMS - RESTORE MAPPING CONTEXT
  2149.     AH = 48h
  2150.     DX = handle
  2151. Return: AH = status
  2152.         00h successful
  2153.         80h internal error
  2154.         81h hardware malfunction
  2155.         83h invalid handle
  2156.         84h undefined function requested
  2157.         8Eh restore of mapping context failed
  2158. SeeAlso: AH=47h
  2159. ----------6749-------------------------------
  2160. INT 67 - LIM EMS - reserved - GET I/O PORT ADDRESSES
  2161.     AH = 49h
  2162. Note:    defined in EMS 3.0, but undocumented in EMS 3.2
  2163. ----------674A-------------------------------
  2164. INT 67 - LIM EMS - reserved - GET TRANSLATION ARRAY
  2165.     AH = 4Ah
  2166. Note:    defined in EMS 3.0, but undocumented in EMS 3.2
  2167. ----------674B-------------------------------
  2168. INT 67 - LIM EMS - GET NUMBER OF EMM HANDLES
  2169.     AH = 4Bh
  2170. Return: AH = status
  2171.         00h successful
  2172.         BX = number of EMM handles
  2173.         80h internal error
  2174.         81h hardware malfunction
  2175.         83h invalid handle
  2176.         84h undefined function requested
  2177. ----------674C-------------------------------
  2178. INT 67 - LIM EMS - GET PAGES OWNED BY HANDLE
  2179.     AH = 4Ch
  2180.     DX = EMM handle
  2181. Return: AH = status
  2182.         00h successful
  2183.         BX = number of logical pages
  2184.         80h internal error
  2185.         81h hardware malfunction
  2186.         83h invalid handle
  2187.         84h undefined function requested
  2188. SeeAlso: AH=4Dh
  2189. ----------674D-------------------------------
  2190. INT 67 - LIM EMS - GET PAGES FOR ALL HANDLES
  2191.     AH = 4Dh
  2192.     ES:DI -> array to receive information
  2193. Return: AH = status
  2194.         00h successful
  2195.         BX = number of active EMM handles
  2196.         array filled with 2-word entries, consisting of a handle
  2197.           and the number of pages allocated to that handle
  2198.         80h internal error
  2199.         81h hardware malfunction
  2200.         84h undefined function requested
  2201. SeeAlso: AH=4Ch
  2202. ----------674E-------------------------------
  2203. INT 67 - LIM EMS - GET OR SET PAGE MAP
  2204.     AH = 4Eh
  2205.     AL = 00h if getting mapping registers
  2206.          01h if setting mapping registers
  2207.          02h if getting and setting mapping registers at once
  2208.          03h if getting size of page-mapping array
  2209.     DS:SI -> array holding information (AL=01/02)
  2210.     ES:DI -> array to receive information (AL=00/02)
  2211. Return: AH = status
  2212.         00h successful
  2213.         AL = bytes in page-mapping array (AL=03h only)
  2214.         array pointed to by ES:DI receives mapping info (AL=00h/02h)
  2215.         80h internal error
  2216.         81h hardware malfunction
  2217.         84h undefined function requested
  2218.         8Fh undefined subfunction parameter
  2219.         A3h contents of source array corrupted (EMS 4.0?)
  2220. Note:    this function was designed to be used by multitasking operating systems
  2221.       and should not ordinarily be used by appplication software.
  2222. SeeAlso: AH=4Fh
  2223. ----------674F-------------------------------
  2224. INT 67 - LIM EMS 4.0 - GET/SET PARTIAL PAGE MAP
  2225.     AH = 4Fh
  2226.     AL = subfunction
  2227.         00h get partial page map
  2228.            DS:SI -> structure containing list of segments whose mapping
  2229.             contexts are to be saved
  2230.            ES:DI -> array to receive page map
  2231.         01h set partial page map
  2232.            DS:SI -> structure containing saved partial page map
  2233.         02h get size of partial page map
  2234.            BX = number of mappable segments in the partial map to be saved
  2235. Return: AH = status
  2236.         00h successful
  2237.         80h internal error
  2238.         81h hardware malfunction
  2239.         84h undefined function requested
  2240.         8Bh one of specified segments is not mappable
  2241.         8Fh undefined subfunction parameter
  2242.         A3h contents of partial page map corrupted or count of mappable
  2243.         segments exceeds total number of mappable segments in system
  2244.     AL = size of partial page map for subfunction 02h
  2245. SeeAlso: AH=4Eh
  2246. ----------6750-------------------------------
  2247. INT 67 - LIM EMS 4.0 - MAP/UNMAP MULTIPLE HANDLE PAGES
  2248.     AH = 50h
  2249.     AL = subfunction
  2250.         00h
  2251.         01h
  2252.     DX = handle
  2253.     CX = number of entries in array
  2254.     DS:SI -> mapping array
  2255. Return: AH = status
  2256.         00h successful
  2257.         80h internal error
  2258.         81h hardware malfunction
  2259.         83h invalid handle
  2260.         84h undefined function requested
  2261.         8Ah one or more logical pages are invalid
  2262.         8Bh one or more physical pages are invalid
  2263.         8Fh invalid subfunction
  2264. SeeAlso: AH=40h
  2265. ----------6751-------------------------------
  2266. INT 67 - LIM EMS 4.0 - REALLOCATE PAGES
  2267.     AH = 51h
  2268.     DX = handle
  2269.     BX = number of pages to be allocated to handle
  2270. Return: BX = actual number of pages allocated to handle
  2271.     AH = status
  2272.         00h successful
  2273.         80h internal error
  2274.         81h hardware malfunction
  2275.         83h invalid handle
  2276.         84h undefined function requested
  2277.         87h more pages requested than present in system
  2278.         88h more pages requested than currently available
  2279. ----------6752-------------------------------
  2280. INT 67 - LIM EMS 4.0 - GET/SET HANDLE ATTRIBUTES
  2281.     AH = 52h
  2282.     AL = subfunction
  2283.         00h get handle attributes
  2284.         Return: AL = attribute
  2285.                 00h handle is volatile
  2286.                 01h handle is nonvolatile
  2287.         01h set handle attributes
  2288.         BL = new attribute (see returned AL)
  2289.         02h get attribute capability
  2290.         Return: AL = attribute capability
  2291.                 00h only volatile handles supported
  2292.                 01h both volatile and non-volatile supported
  2293.     DX = handle
  2294. Return:    AH = status
  2295.         00h successful
  2296.         80h internal error
  2297.         81h hardware malfunction
  2298.         83h invalid handle
  2299.         84h undefined function requested
  2300.         8Fh undefined subfunction
  2301.         90h undefined attribute type
  2302.         91h feature not supported
  2303. SeeAlso: AH=53h
  2304. ----------6753-------------------------------
  2305. INT 67 - LIM EMS 4.0 - GET/SET HANDLE NAME
  2306.     AH = 53h
  2307.     AL = subfunction
  2308.         00h get handle name
  2309.            ES:DI -> 8-byte handle name array
  2310.         01h set handle name
  2311.            DS:SI -> 8-byte handle name
  2312.     DX = handle
  2313. Return: AH = status
  2314.         00h successful
  2315.         80h internal error
  2316.         81h hardware malfunction
  2317.         83h invalid handle
  2318.         84h undefined function requested
  2319.         8Fh undefined subfunction
  2320.         A1h duplicate handle name
  2321. SeeAlso: AH=52h
  2322. ----------6754-------------------------------
  2323. INT 67 - LIM EMS 4.0 - GET HANDLE DIRECTORY
  2324.     AH = 54h
  2325.     AL = subfunction
  2326.         00h get handle directory
  2327.            ES:DI -> buffer for handle directory
  2328.         01h search for named handle
  2329.            DS:SI -> 8-byte name
  2330.         02h get total number of handles
  2331. Return: AL = number of entries in handle directory (subfunction 00h)
  2332.     DX = value of named handle (subfunction 01h)
  2333.     BX = total number of handles (subfunction 02h)
  2334.     AH = status
  2335.         00h successful
  2336.         80h internal error
  2337.         81h hardware malfunction
  2338.         84h undefined function requested
  2339.         8Fh undefined subfunction
  2340.         A0h no such handle name
  2341.         A1h a handle found had no name
  2342. ----------6755-------------------------------
  2343. INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND JUMP
  2344.     AH = 55h
  2345.     AL = subfunction
  2346.         00h physical page numbers provided by caller
  2347.         01h segment addresses provided by caller
  2348.     DX = handle
  2349.     DS:SI -> structure containing map and jump address
  2350. Return: (at target address unless error)
  2351.     AH = status
  2352.         00h successful
  2353.         80h internal error
  2354.         81h hardware failure
  2355.         83h invalid handle
  2356.         84h undefined function requested
  2357.         8Ah invalid logical page number encountered
  2358.         8Bh invalid physical page number encountered
  2359.         8Fh invalid subfunction
  2360. SeeAlso: AH=56h
  2361. ----------6756-------------------------------
  2362. INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND CALL
  2363.     AH = 56h
  2364.     AL = subfunction
  2365.         00h physical page numbers provided by caller
  2366.         DX = handle
  2367.         DS:SI -> structure containing page map and call address
  2368.         01h segment addresses provided by caller
  2369.         DX = handle
  2370.         DS:SI -> structure containing page map and call address
  2371.         02h get page map stack space required
  2372.         Return: BX = stack space required
  2373. Return: (if successful, the target address is called.  Use a RETF to return and
  2374.      restore mapping context)
  2375.     AH = status (see AH=55h)
  2376. SeeAlso: AH=55h
  2377. ----------6757-------------------------------
  2378. INT 67 - LIM EMS 4.0 - MOVE/EXCHANGE MEMORY REGION
  2379.     AH = 57h
  2380.     AL = subfunction
  2381.         00h move memory region
  2382.         01h exchange memory region
  2383.     DS:SI -> structure describing source and destination (see below)
  2384. Return: AH = status
  2385.         00h successful
  2386.         80h internal error
  2387.         81h hardware failure
  2388.         83h invalid handle
  2389.         84h undefined function requested
  2390.         8Ah invalid logical page number encountered
  2391.         8Fh undefined subfunction
  2392.         92h successful, but a portion of the source region has been
  2393.         overwritten
  2394.         93h length of source or destination region exceeds length of region
  2395.         allocated to either source or destination handle
  2396.         94h conventional and expanded memory regions overlap
  2397.         95h offset within logical page exceeds size of logical page
  2398.         96h region length exceeds 1M
  2399.         97h source and destination EMS regions have same handle and overlap
  2400.         98h memory source or destination type undefined
  2401.         A2h attempted to wrap around 1M conventional address space
  2402. Note:    source and destination may overlap for a move, in which case the copy
  2403.       direction is chosen such that the destination receives an intact copy
  2404.       of the source region
  2405.  
  2406. Format of EMS copy data:
  2407. Offset    Size    Description
  2408.  00h    DWORD    region length in bytes
  2409.  04h    BYTE    source memory type
  2410.         00h conventional
  2411.         01h expanded
  2412.  05h    WORD    source handle (0000h if conventional memory)
  2413.  07h    WORD    source initial offset (within page if EMS, segment if convent)
  2414.  09h    WORD    source initial segment (conv mem) or logical page (EMS)
  2415.  0Bh    BYTE    destination memory type
  2416.         00h conventional
  2417.         01h expanded
  2418.  0Ch    WORD    destination handle
  2419.  0Eh    WORD    destination initial offset
  2420.  10h    WORD    destination initial segment or page
  2421. ----------6758-------------------------------
  2422. INT 67 - LIM EMS 4.0 - GET MAPPABLE PHYSICAL ADDRESS ARRAY
  2423.     AH = 58h
  2424.     AL = subfunction
  2425.         00h get mappable physical address array
  2426.         ES:DI -> buffer to be filled with array
  2427.         01h get number of entries in m.p.a. array
  2428. Return: CX = number of entries in array
  2429.     AH = status
  2430.         00h successful
  2431.         80h internal error
  2432.         81h hardware failure
  2433.         84h undefined function requested
  2434.         8Fh undefined subfunction
  2435. Note:    the returned array for subfunction 00h is filled in physical segment
  2436.       address order
  2437.  
  2438. Format of mappable physical address entry:
  2439. Offset    Size    Description
  2440.  00h    WORD    physical page segment
  2441.  02h    WORD    physical page number
  2442. ----------6759-------------------------------
  2443. INT 67 - LIM EMS 4.0 - GET EXPANDED MEMORY HARDWARE INFORMATION
  2444.     AH = 59h
  2445.     AL = subfunction
  2446.         00h get hardware configuration array
  2447.         ES:DI -> buffer to be filled with array (see below)
  2448.         01h get unallocated raw page count
  2449.         Return: BX = unallocated raw pages
  2450.             DX = total raw pages
  2451. Return:    AH = status
  2452.         00h successful
  2453.         80h internal error
  2454.         81h hardware failure
  2455.         84h undefined function requested
  2456.         8Fh undefined subfunction
  2457.         A4h access denied by operating system
  2458. Note:    subfunction 00h is for use by operating systems only, and can be
  2459.       enabled or disabled at any time by the operating system
  2460.  
  2461. Format of hardware configuration array:
  2462. Offset    Size    Description
  2463.  00h    WORD    size of raw EMM pages in paragraphs
  2464.  02h    WORD    number of alternate register sets
  2465.  04h    WORD    size of mapping-context save area in bytes
  2466.  06h    WORD    number of register sets assignable to DMA
  2467.  08h    WORD    DMA operation type
  2468.         0000h DMA with alternate register sets
  2469.         0001h only one DMA register set
  2470. ----------675A-------------------------------
  2471. INT 67 - LIM EMS 4.0 - ALLOCATE STANDARD/RAW PAGES
  2472.     AH = 5Ah
  2473.     AL = subfunction
  2474.         00h allocate standard pages
  2475.         01h allocate raw pages
  2476.     BX = number of pages to allocate
  2477. Return: DX = handle
  2478.     AH = status
  2479.         00h successful
  2480.         80h internal error
  2481.         81h hardware failure
  2482.         84h undefined function requested
  2483.         85h no more handles available
  2484.         87h insufficient memory pages in system
  2485.         88h insufficient memory pages available
  2486.         8Fh undefined subfunction
  2487. ----------675B-------------------------------
  2488. INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET
  2489.     AH = 5Bh
  2490.     AL = subfunction
  2491.         00h get alternate map register set
  2492.         Return: BL = current active alternate map register set number
  2493.             ES:DI -> map register context save area if BL=00h
  2494.         01h set alternate map register set
  2495.         BL = new alternate map register set number
  2496.         ES:DI -> map register context save area if BL=0
  2497.         02h get alternate map save array size
  2498.         Return: DX = array size in bytes
  2499.         03h allocate alternate map register set
  2500.         Return: BL = number of map register set; 00h = not supported
  2501.         04h deallocate alternate map register set
  2502.         BL = number of alternate map register set
  2503. Return: AH = status
  2504.         00h successful
  2505.         80h internal error
  2506.         81h hardware malfunction
  2507.         84h undefined function requested
  2508.         8Fh undefined subfunction
  2509.         9Ah specified alternate map register set not supported
  2510.         9Bh all alternate map register sets currently allocated
  2511.         9Ch alternate map register sets not supported
  2512.         9Dh undefined or unallocated alternate map register set
  2513.         A3h source array corrupted
  2514.         A4h operating system denied access
  2515. Note:    this function is for use by operating systems only, and can be
  2516.       enabled or disabled at any time by the operating system
  2517. ----------675B-------------------------------
  2518. INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET - DMA REGISTERS
  2519.     AH = 5Bh
  2520.     AL = subfunction
  2521.         05h allocate DMA register set
  2522.         Return: BL = DMA register set number, 00h if not supported
  2523.         06h enable DMA on alternate map register set
  2524.            BL = DMA register set number
  2525.            DL = DMA channel number
  2526.         07h disable DMA on alternate map register set
  2527.            BL = DMA register set number
  2528.         08h deallocate DMA register set
  2529.            BL = DMA register set number
  2530. Return: AH = status
  2531.         00h successful
  2532.         80h internal error
  2533.         81h hardware malfunction
  2534.         84h undefined function requested
  2535.         8Fh undefined subfunction
  2536.         9Ah specified DMA register set not supported
  2537.         9Bh all DMA register sets currently allocated
  2538.         9Ch alternate DMA sets not supported
  2539.         9Dh undefined or unallocated DMA register set
  2540.         9Eh dedicated DMA channels not supported
  2541.         9Fh specified dedicated DMA channel not supported
  2542.         A3h source array corrupted
  2543.         A4h operating system denied access
  2544. Note:    this function is for use by operating systems only, and can be
  2545.       enabled or disabled at any time by the operating system
  2546. ----------675C-------------------------------
  2547. INT 67 - LIM EMS 4.0 - PREPARE EXPANDED MEMORY HARDWARE FOR WARM BOOT
  2548.     AH = 5Ch
  2549. Return: AH = status
  2550.         00h successful
  2551.         80h internal error
  2552.         81h hardware malfunction
  2553.         84h undefined function requested
  2554. ----------675D-------------------------------
  2555. INT 67 - LIM EMS 4.0 - ENABLE/DISABLE OS FUNCTION SET FUNCTIONS
  2556.     AH = 5Dh
  2557.     AL = subfunction
  2558.         00h enable OS Function Set
  2559.         01h disable OS Function Set
  2560.         02h return access key (resets memory manager, returns access key at
  2561.         next invocation)
  2562.     BX,CX = access key returned by first invocation
  2563. Return: BX,CX = access key, returned only on first invocation of function
  2564.     AH = status
  2565.         00h successful
  2566.         80h internal error
  2567.         81h hardware malfunction
  2568.         84h undefined function requested
  2569.         8Fh undefined subfunction
  2570.         A4h operating system denied access
  2571. ----------6760-------------------------------
  2572. INT 67 - EEMS - GET PHYSICAL WINDOW ARRAY
  2573.     AH = 60h
  2574.     ES:DI -> buffer
  2575. Return: AH = status
  2576.     AL = number of entries
  2577.     buffer at ES:DI filled
  2578. ----------6761-------------------------------
  2579. INT 67 - EEMS - GENERIC ACCELERATOR CARD SUPPORT
  2580.     AH = 61h
  2581.     ???
  2582. Return: ???
  2583. Note:    can be used by accelerator card manufacturer to flush RAM cache,
  2584.       ensuring that the cache accurately reflects what the processor would
  2585.       see without the cache.
  2586. ----------6768-------------------------------
  2587. INT 67 - EEMS - GET ADDRESSES OF ALL PAGE FRAMES IN SYSTEM
  2588.     AH = 68h
  2589.     ES:DI -> buffer
  2590. Return: AH = status
  2591.     AL = number of entries
  2592.     buffer at ES:DI filled
  2593. Note:    equivalent to LIM 4.0 function 58h
  2594. ----------6769-------------------------------
  2595. INT 67 - EEMS - MAP PAGE INTO FRAME
  2596.     AH = 69h
  2597.     AL = frame number
  2598.     BX = page number
  2599.     DX = handle
  2600. Return: AH = status
  2601. Note:    similar to EMS function 44h
  2602. SeeAlso: AH=44h,AH=50h,AH=6Ah
  2603. ----------676A-------------------------------
  2604. INT 67 - EEMS - PAGE MAPPING
  2605.     AH = 6Ah
  2606.     AL = subfunction
  2607.         00h save partial page map
  2608.         CH = first page frame
  2609.         CL = number of frames
  2610.         ES:DI -> buffer which is to be filled
  2611.         01h restore partial page map
  2612.         CH = first page frame
  2613.         CL = number of frames
  2614.         DI:SI -> previously saved page map
  2615.         02h save and restore partial page map
  2616.         CH = first page frame
  2617.         CL = number of frames
  2618.         ES:DI = buffer for current page map
  2619.         DI:SI = new page map
  2620.         03h get size of save array
  2621.         CH = first page frame
  2622.         CL = number of frames
  2623.         Return: AL = size of array in bytes
  2624.         04h switch to standard map register setting
  2625.         05h switch to alternate map register setting
  2626.         06h deallocate pages mapped to frames in conventional memory
  2627.         CH = first page frame
  2628.         CL = number of frames
  2629. Return: AH = status
  2630. Note:    similar to EMS function 4Eh, except that a subrange of pages can be
  2631.       specified
  2632. SeeAlso: AH=69h
  2633. ----------67DE00-----------------------------
  2634. INT 67 - Virtual Control Program Interface - INSTALLATION CHECK
  2635.     AX = DE00h
  2636. Return: AH = 00h    VCPI is present
  2637.         BH = major version number
  2638.         BL = minor version number
  2639.     AH nonzero  VCPI not present
  2640. ----------67DE01-----------------------------
  2641. INT 67 - Virtual Control Program Interface - GET PROTECTED MODE INTERFACE
  2642.     AX = DE01h
  2643.     ES:DI -> 4K page table buffer
  2644.     DS:SI -> three descriptor table entries in GDT
  2645.         first becomes code segment descriptor, other two for use by
  2646.         main control program
  2647. Return: AH = 00h successful
  2648.         DI -> first unused page table entry in buffer
  2649.         EBX -> protected mode entry point in code segment
  2650.     AH = nonzero  failed
  2651. ----------67DE02-----------------------------
  2652. INT 67 - Virtual Control Program Interface - GET MAX PHYSICAL MEMORY ADDRESS
  2653.     AX = DE02h
  2654. Return: AH = 00h  successful
  2655.         EDX = physical address of highest 4K memory page
  2656.     AH nonzero: failed
  2657. ----------67DE03-----------------------------
  2658. INT 67 - Virtual Control Program Interface - GET NUMBER OF FREE 4K PAGES
  2659.     AX = DE03h
  2660. Return: AH = 00h  successful
  2661.         EDX = number of free 4K pages
  2662.     AH nonzero: failed
  2663. Notes:    returns total number of pages available to ALL tasks in system
  2664.     also available in protected mode by calling the protected-mode VCPI
  2665.       entry point
  2666. SeeAlso: AX=DE04h
  2667. ----------67DE04-----------------------------
  2668. INT 67 - Virtual Control Program Interface - ALLOCATE A 4K PAGE
  2669.     AX = DE04h
  2670. Return: AH = 00h successful
  2671.         EDX = physical address of allocated page
  2672.     AH nonzero: failed
  2673. Notes:    the client program is responsible for freeing all memory allocated
  2674.       with this call before terminating
  2675.     also available in protected mode by calling the protected-mode VCPI
  2676.       entry point
  2677. SeeAlso: AX=DE03h,AX=DE05h
  2678. ----------67DE05-----------------------------
  2679. INT 67 - Virtual Control Program Interface - FREE 4K PAGE
  2680.     AX = DE05h
  2681.     EDX = physical address of 4K page
  2682. Return: AH = 00h successful
  2683.     AH nonzero: failed
  2684. Note:    also available in protected mode by calling the protected-mode VCPI
  2685.       entry point
  2686. SeeAlso: AX=DE04h
  2687. ----------67DE06-----------------------------
  2688. INT 67 - Virtual Control Program Interface - GET PHYS ADDR OF PAGE IN FIRST MB
  2689.     AX = DE06h
  2690.     CX = page number (linear address shifted right 12 bits)
  2691. Return: AH = 00h successful
  2692.         EDX = physical address of page
  2693.     AH nonzero: invalid page number (AH = 8Bh recommended)
  2694. ----------67DE07-----------------------------
  2695. INT 67 - Virtual Control Program Interface - READ CR0
  2696.     AX = DE07h
  2697. Return: AH = 00h
  2698.     EBX = value of Control Register 0
  2699. SeeAlso: AX=DE07h
  2700. ----------67DE08-----------------------------
  2701. INT 67 - Virtual Control Program Interface - READ DEBUG REGISTERS
  2702.     AX = DE08h
  2703.     ES:DI -> array of 8 DWORDs
  2704. Return: AH = 00h
  2705.     buffer filled with DR0 first, DR7 last, DR4 and DR5 unused
  2706. SeeAlso: AX=DE09h
  2707. ----------67DE09-----------------------------
  2708. INT 67 - Virtual Control Program Interface - SET DEBUG REGISTERS
  2709.     AX = DE09h
  2710.     ES:DI -> array of 8 DWORDs holding new values of debug registers
  2711. Return: AH = 00h
  2712. Note:    values for DR4 and DR5 ignored
  2713. SeeAlso: AX=DE08h
  2714. ----------67DE0A-----------------------------
  2715. INT 67 - Virtual Control Program Interface - GET 8259 INTERRUPT VECTOR MAPPINGS
  2716.     AX = DE0Ah
  2717. Return: AH = 00h successful
  2718.         BX = first vector used by master 8259 (IRQ0)
  2719.         CX = first vector used by slave 8259 (IRQ8)
  2720.     AH nonzero: failed
  2721. Note:    CX is undefined in systems without a slave 8259
  2722. SeeAlso: AX=DE0Bh
  2723. ----------67DE0B-----------------------------
  2724. INT 67 - Virtual Control Program Interface - SET 8259 INTERRUPT VECTOR MAPPINGS
  2725.     AX = DE0Bh
  2726.     BX = first vector used by master 8259
  2727.     CX = first vector used by slave 8259
  2728.     interrupts disabled
  2729. Return: AH = 00h successful
  2730.     AH nonzero: failed 
  2731. Notes:    This call merely informs the server that the client has changed the
  2732.       interrupt mappings.  The client may not change the mappings if they
  2733.       have already been changed by the server or another client, and is
  2734.       responsible for restoring the original mappings before terminating.
  2735. SeeAlso: AX=DE0Ah
  2736. ----------67DE0C-----------------------------
  2737. INT 67 - Virtual Control Program Interface - SWITCH TO PROTECTED MODE
  2738.     AX = DE0Ch
  2739.     ESI = linear address in first megabyte of values for system registers
  2740.     interrupts disabled
  2741. Return: interrupts disabled
  2742.     GDTR, IDTR, LDTR, TR loaded
  2743.     SS:ESP must have at least 16 bytes space, and the entry point is
  2744.         required to set up a new stack before enabling interrupts
  2745.     EAX, ESI, DS, ES, FS, GS destroyed
  2746. SeeAlso: INT 15/AH=89h
  2747.  
  2748. Note:    in protected mode, calling the protected-mode VCPI entry point with 
  2749.       AX = DE0Ch
  2750.       DS = segment selector from function DE01h
  2751.       SS:ESP in first megabyte of linear memory
  2752.       STACK:QWORD  return address from FAR call to 32-bit segment
  2753.         DWORD  EIP
  2754.         DWORD  CS
  2755.         DWORD  reserved for EFLAGS
  2756.         DWORD  ESP
  2757.         DWORD  SS
  2758.         DWORD  ES
  2759.         DWORD  DS
  2760.         DWORD  FS
  2761.         DWORD  GS
  2762.       and interrupts disabled, will switch to virtual86 mode with
  2763.       interrupts disabled, all segment registers loaded, and EAX destroyed.
  2764.  
  2765. Format of system register values for switch to protected mode:
  2766. Offset    Size    Description
  2767.  00h    DWORD    value for CR3
  2768.  04h    DWORD    linear address in first megabyte of value for GDTR
  2769.  08h    DWORD    linear address in first megabyte of value for IDTR
  2770.  0Ch    WORD    value for LDTR
  2771.  0Eh    WORD    value for TR
  2772.  10h    PWORD    CS:EIP of protected mode entry-point
  2773. ----------67---------------------------------
  2774. INT 67 - Sangoma CCPOP 3270 resident module
  2775. ----------6801-------------------------------
  2776. INT 68 - APPC/PC
  2777.     AH = 01h
  2778.     DS:DX -> control block
  2779.  
  2780. Format of control block:
  2781. Offset    Size    Description
  2782.  00h 12 BYTEs    reserved
  2783.  0Ch    WORD    verb (action)
  2784.  0Eh  6 BYTEs    00h
  2785.  14h    DWORD    (high byte first) return code (see below)
  2786. ---if verb = 1B00h (DISPLAY)---
  2787.  18h    WORD    00h
  2788.  1Ah  8 BYTEs    (high byte first) logical unit ID
  2789.  22h  8 BYTEs    (high byte first) partner logical unit name
  2790.  2Ah  8 BYTEs    (high byte first) mode name
  2791.  32h    BYTE    logical unit session limit
  2792.  33h    BYTE    partner logical unit session limit
  2793.  34h    BYTE    mode maximum negotiable session limit
  2794.  35h    BYTE    current session limit
  2795.  36h    BYTE    minimum negotiated winner limit
  2796.  37h    BYTE    maximum negotiated loser limit
  2797.  38h    BYTE    active session count
  2798.  39h    BYTE    active CONWINNER session count
  2799.  3Ah    BYTE    active CONLOSER session count
  2800.  3Bh    BYTE    session termination count
  2801.  3Ch    BYTE    bit 7: SESSION_TERMINATION_TARGET_DRAIN
  2802.         bit 6: SESSION_TERMINATION_SOURCE_DRAIN
  2803. ---if verb=2000h (Attach Physical Unit)---
  2804.  18h    WORD    00h
  2805.  1Ah    BYTE    version
  2806.  1Bh    BYTE    release
  2807.  1Ch  8 BYTEs    (high byte first) net name
  2808.  24h  8 BYTEs    (high byte first) physical unit name
  2809.  2Ch  8 BYTEs    00h
  2810.  34h    DWORD    pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh=don't log errors
  2811.  38h    DWORD    00h
  2812.  3Ch    BYTE    00h RETURN_CONTROL: COMPLETE
  2813.         01h RETURN_CONTROL: INCOMPLETE
  2814. ---if verb=2100h (Attach Logical Unit)---
  2815.  18h    WORD    70  offset to partner logical unit record
  2816.  1Ah  8 BYTEs    (high byte first) logical unit name
  2817.  22h  8 BYTEs    (high byte first) logical unit ID
  2818.  2Ah    BYTE    logical unit local address
  2819.  2Bh    BYTE    logical unit session limit
  2820.  2Ch    DWORD    pointer to CREATE_TP_EXIT routine,
  2821.         FFFFFFFFh = reject incoming ALLOCATEs
  2822.         00000000h = queue ALLOCATEs
  2823.  30h    DWORD    00h
  2824.  34h    DWORD    pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh=don't log errors
  2825.  38h    DWORD    00h
  2826.  3Ch    BYTE    maximum TPs
  2827.  3Dh    BYTE    queue depth
  2828.  3Eh    DWORD    pointer to LU_LU_PASSWORD_EXIT routine, FFFFFFFFh=no pswd exit
  2829.  42h    DWORD    00h
  2830.  46h    WORD    total length of partner records
  2831.     for each partner logical unit:
  2832.     WORD    length of this partner logical unit record
  2833.     WORD    42  offset to mode records
  2834.       8 BYTEs    (high byte first) partner logical unit name
  2835.     BYTE    partner logical unit security capabilities
  2836.         bit 7: already verified
  2837.         bit 6: conversation level security
  2838.         bit 5: session level security
  2839.     BYTE    partner logical unit session limit
  2840.     WORD    partner logical unit maximum MC_SEND_LL
  2841.       8 BYTEs    (high byte first) partner logical unit DLC name
  2842.     BYTE    partner logical unit adapter number
  2843.      17 BYTEs    (counted string) partner logical unit adapter address
  2844.     WORD    total length of mode records
  2845.    for each mode:
  2846.     WORD    16  length of this mode record
  2847.       8 BYTEs    (high byte first) mode name
  2848.     WORD    RU_SIZE high bound
  2849.     WORD    RU_SIZE low bound
  2850.     BYTE    mode maximum negotiable session limit
  2851.     BYTE    pacing size for receive
  2852. ---if verb=2200h (Detach Logical Unit)---
  2853.  18h  8 BYTEs    (high byte first) logical unit ID
  2854.  20h    BYTE    00h
  2855. ---if verb=2700h (Detach Physical Unit)---
  2856.  18h    BYTE    00h  type: hard
  2857.         01h  type: soft
  2858. ---if verb=2B00h (Activate DLC)---
  2859.  18h  8 BYTEs    (high byte first) DLC name
  2860.  20h    BYTE    adapter number
  2861.  
  2862. Values for return code:
  2863.      0000h    successful
  2864.      0001h    BAD_TP_ID
  2865.      0002h    BAD_CONV_ID
  2866.      0003h    bad logical unit ID
  2867.      0008h    no physical unit attached
  2868.      0110h    bad state
  2869.      01B1h    BAD_PART_LUNAME
  2870.      01B2h    bad mode name
  2871.      0201h    physical unit already active
  2872.      0211h    logical unit already active
  2873.      0212h    BAD_PART_SESS
  2874.      0213h    BAD_RU_SIZES
  2875.      0214h    BAD_MODE_SESS
  2876.      0216h    BAD_PACING_CNT
  2877.      0219h    EXTREME_RUS
  2878.      021Ah    SNASVCMG_1
  2879.      0223h    SSCP_CONNECTED_LU
  2880.      0230h    invalid change
  2881.      0243h    too many TPs
  2882.      0272h    adapter close failure
  2883.      0281h    GET_ALLOC_BAD_TYPE
  2884.      0282h    unsuccessful
  2885.      0283h    DLC failure
  2886.      0284h    unrecognized DLC
  2887.      0286h    duplicate DLC
  2888.      0301h    SSCP_PU_SESSION_NOT_ACTIVE
  2889.      0302h    data exceeds RU size
  2890.      0401h    invalid direction
  2891.      0402h    invalid type
  2892.      0403h    segment overlap
  2893.      0404h    invalid first character
  2894.      0405h    table error
  2895.      0406h    conversion error
  2896.      F0010000h    APPC disabled
  2897.      F0020000h    APPC busy
  2898.      F0030000h    APPC abended
  2899.      F0040000h    incomplete
  2900.  
  2901. Routines defined by LU_LU_PASSWORD_EXIT, CREATE_TP_EXIT, and SYSTEM_LOG_EXIT
  2902. pointers are called by pushing the DWORD pointer to the verb on the stack and
  2903. then performing a FAR call.
  2904.  
  2905. Format of ACCESS_LU_LU_PW verb:
  2906. Offset    Size    Description
  2907.  00h 12 BYTEs    reserved
  2908.  0Ch    WORD    1900h
  2909.  0Eh  8 BYTEs    (high byte first) logical unit ID
  2910.  16h  8 BYTEs    (high byte first) logical unit name
  2911.  1Eh  8 BYTEs    (high byte first) partner logical unit name
  2912.  26h 17 BYTEs    (counted string) partner fully qualified logical unit name
  2913.  37h    BYTE    password available (0=no, 1=yes)
  2914.  38h  8 BYTEs    password
  2915.  
  2916. Format of CREATE_TP verb:
  2917. Offset    Size    Description
  2918.  00h 12 BYTEs    reserved
  2919.  0Ch    WORD    2300h
  2920.  0Eh  6 BYTEs    00h
  2921.  14h    DWORD    (high byte first) sense code
  2922.         00000000h    Ok
  2923.         080F6051h    SECURITY_NOT_VALID
  2924.         084B6031h    TP_NOT_AVAIL_RETRY
  2925.         084C0000h    TP_NOT_AVAIL_NO_RETRY
  2926.         10086021h    TP_NAME_NOT_RECOGNIZED
  2927.         10086034h    CONVERSATION_TYPE_MISMATCH
  2928.         10086041h    SYNC_LEVEL_NOT_SUPPORTED
  2929.  18h  8 BYTEs    (high byte first) TP ID
  2930.  20h  8 BYTEs    (high byte first) logical unit ID
  2931.  28h    DWORD    (high byte first) conversation ID
  2932.  2Ch    BYTE    0 basic conversation, 1 mapped conversation
  2933.  2Dh    BYTE    0 no sync level, 1 confirm
  2934.  2Eh    BYTE    reserved
  2935.  2Fh 65 BYTEs    (counted string) transaction program name
  2936.  70h  6 BYTEs    00h
  2937.  76h    WORD    length of ERROR_LOG_DATA to return
  2938.  78h    DWORD    pointer to ERROR_LOG_DATA buffer
  2939.  7Ch  8 BYTEs    (high byte first) partner logical unit name
  2940.  84h 18 BYTEs    (counted string) partner fully qualified logical unit name
  2941.  96h  8 BYTEs    (high byte first) mode name
  2942.  9Eh 12 BYTEs    00h
  2943.  AAh 11 BYTEs    (counted string) password
  2944.  B5h 11 BYTEs    (counted string) user ID
  2945.  C0h    BYTE    0 verification should be performed
  2946.         1 already verified
  2947.  
  2948. Format of SYSLOG verb:
  2949. Offset    Size    Description
  2950.  00h 12 BYTEs    reserved
  2951.  0Ch    WORD    2600h
  2952.  0Eh 10 BYTEs    00h
  2953.  18h    WORD    (high byte first) type
  2954.  1Ah    DWORD    (high byte first) subtype
  2955.  1Eh    DWORD    pointer to ADDITIONAL_INFO
  2956.  22h    DWORD    (high byte first) conversation ID
  2957.  26h  8 BYTEs    (high byte first) TP ID
  2958.  2Eh  8 BYTEs    (high byte first) physical unit or logical unit name
  2959.  36h    WORD    length of data
  2960.  38h    DWORD    pointer to data
  2961.  3Ch    BYTE    00h
  2962. ----------6802-------------------------------
  2963. INT 68 - APPC/PC
  2964.     AH = 02h
  2965.     DS:DX -> control block
  2966.  
  2967. Format of control block:
  2968. Offset    Size    Description
  2969.  00h 12 BYTEs    reserved
  2970.  0Ch    WORD    verb (action)
  2971.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  2972.         0 if basic verb
  2973.  0Fh  5 BYTEs    reserved (0)
  2974.  14h    WORD    (high byte first) primary return code (see below)
  2975.  16h    DWORD    (high byte first) error code (see below)
  2976.  1Ah  8 BYTEs    (high byte first) TP_ID
  2977.  22h    DWORD    (high byte first) conversation ID
  2978. ---if verb=0100h (Allocate or MC_Allocate)---
  2979.  26h    BYTE    (MC_Allocate only) 0 basic conversation
  2980.                    1 mapped conversation
  2981.  27h    BYTE    00h SYNC_LEVEL = none
  2982.         01h SYNC_LEVEL = confirm
  2983.  28h    WORD    0000h
  2984.  2Ah    BYTE    00h RETURN_CONTROL: when session allocated
  2985.         01h RETURN_CONTROL: immediate
  2986.         02h RETURN_CONTROL: when session free
  2987.  2Bh  8 BYTEs    00h
  2988.  33h  8 BYTEs    (high byte first) partner logical unit name
  2989.  3Bh  8 BYTEs    (high byte first) mode name
  2990.  43h 65 BYTEs    (counted string) TP name
  2991.  84h    BYTE    00h security: none
  2992.         01h security: same
  2993.         02h security: pgm
  2994.  85h 11 BYTEs    00h
  2995.  90h 11 BYTEs    (counted string) password
  2996.  9Bh 11 BYTEs    (counted string) user ID
  2997.  A6h    WORD    PIP_DATA length
  2998.  A8h    DWORD    pointer to PIP_DATA
  2999. ---if verb=0300h (Confirm or MC_Confirm)---
  3000.  26h    BYTE  request to send received (0=no, 1=yes)
  3001. ---if verb=0400h (Confirmed or MC_Confirmed), no additional fields---
  3002. ---if verb=0500h (Deallocate or MC_Deallocate)---
  3003.  26h    BYTE    00h
  3004.  27h    BYTE    type 0 SYNC_LEVEL
  3005.              1 FLUSH
  3006.              2 ABEND_PROC
  3007.              3 ABEND_SVC
  3008.              4 ABEND_TIMER
  3009.              5 ABEND
  3010.  28h    WORD    (MC_Deallocate only) length of error log data
  3011.  2Ah    DWORD    (MC_Deallocate only) pointer to error log data
  3012. ---if verb=0600h (Flush or MC_Flush), no additional fields---
  3013. ---if verb=0700h (Get_Attributes or MC_Get_Attributes)---
  3014.  26h  8 BYTEs    (high byte first) logical unit ID
  3015.  2Eh    BYTE    00h
  3016.  2Fh    BYTE    SYNC_LEVEL (0=none, 1=confirm)
  3017.  30h  8 BYTEs    (high byte first) mode name
  3018.  38h  8 BYTEs    (high byte first) own net name
  3019.  40h  8 BYTEs    (high byte first) own logical unit name
  3020.  48h  8 BYTEs    (high byte first) partner logical unit name
  3021.  50h 18 BYTEs    (counted string) partner's fully qualified logical unit name
  3022.  62h    BYTE    00h
  3023.  63h 11 BYTEs    (counted string) user ID
  3024. ---if verb=0800h (Get_Type)---
  3025.  26h    BYTE    type (0=basic conversation, 1=mapped conversation)
  3026. ---if verb=0900h (Post_on_Receipt)---
  3027.  26h    WORD    maximum length
  3028.  28h    BYTE    fill (0=buffer, 1=LL)
  3029. ---if verb=0A00h (Prepare_to_Receive or MC_Prepare_to_Receive)---
  3030.  26h    BYTE    type (0=SYNC_LEVEL, 1=FLUSH)
  3031.  27h    BYTE    locks (0=short, 1=long)
  3032. ---if verb=0B00h (Receive_and_Wait or MC_Receive_and_Wait)---
  3033.  26h    BYTE    what received
  3034.         00h data
  3035.         01h data complete
  3036.         02h data incomplete
  3037.         03h confirm
  3038.         04h confirm send
  3039.         05h confirm deallocate
  3040.         06h send
  3041.  27h    BYTE    (MC_Receive_and_Wait only) fill (0=buffer, 1=LL)
  3042.  28h    BYTE    Request_to_Send_Received (0=no, 1=yes)
  3043.  29h    WORD    maximum length
  3044.  2Bh    WORD    data length
  3045.  2Dh    DWORD    pointer to data
  3046. ---if verb=0C00h (Receive_Immediate or MC_Receive_Immediate)---
  3047.  26h    BYTE    what received
  3048.         00h data
  3049.         01h data complete
  3050.         02h data incomplete
  3051.         03h confirm
  3052.         04h confirm send
  3053.         05h confirm deallocate
  3054.         06h send
  3055.  27h    BYTE    (MC_Receive_Immediate only) fill (0=buffer, 1=LL)
  3056.  28h    BYTE    Request_to_Send_Received (0=no, 1=yes)
  3057.  29h    WORD    maximum length
  3058.  2Bh    WORD    data length
  3059.  2Dh    DWORD    pointer to data
  3060. ---if verb=0E00h (Request_to_Send or MC_Request_to_Send), no other fields---
  3061. ---if verb=0F00h (Send_Data or MC_Send_Data)---
  3062.  26h    BYTE    request to send received (0=no, 1=yes)
  3063.  27h    BYTE    00h
  3064.  28h    WORD    data length
  3065.  2Ah    DWORD    pointer to data
  3066. ---if verb=1000h (Send_Error or MC_Send_Error)---
  3067.  26h    BYTE    request to send received (0=no, 1=yes)
  3068.  27h    BYTE    type (0=program, 1=SVC)
  3069.  28h    DWORD    00h
  3070.  2Ch    WORD    (MC_Send_Error only) LOG_DATA length
  3071.  2Eh    DWORD    (MC_Send_Error only) pointer to LOG_DATA
  3072. ---if verb=1200h (Test or MC_Test)---
  3073.  26h    BYTE    (MC_Test only) test (0=posted, 1=request_to_send received)
  3074.         Note: error code has different interpretations for:
  3075.             0 posted data
  3076.             1 posted not data (primary return code = 0)
  3077.             1 bad TP_ID (primary return code = 1)
  3078. ---if verb=1300h (Wait)---
  3079.  26h    BYTE    number of conversations to wait on
  3080.         Note: error codes have interpretations as for 1200h above
  3081.  
  3082. Values for primary return code:
  3083.  0000h    successful
  3084.  0001h    parameter check
  3085.  0002h    state check
  3086.  0003h    allocation error
  3087.  0005h    deallocate abended
  3088.  0006h    deallocate abended program
  3089.  0007h    deallocate abended SVC
  3090.  0008h    deallocate abended timer
  3091.  0009h    deallocate normal return
  3092.  000Ah    data posting blocked
  3093.  000Bh    posting not active
  3094.  000Ch    PROG_ERROR_NO_TRUNC
  3095.  000Dh    PROG_ERROR_TRUNC
  3096.  000Eh    PROG_ERROR_PURGING
  3097.  000Fh    CONV_FAILURE_RETRY
  3098.  0010h    CONV_FAILURE_NO_RETRY
  3099.  0011h    SVC_ERROR_NO_TRUNC
  3100.  0012h    SVC_ERROR_TRUNC
  3101.  0013h    SVC_ERROR_PURGING
  3102.  0014h    unsuccessful
  3103.  0018h    CNOS partner logical unit reject
  3104.  0019h    conversation type mixed
  3105.  F001h    APPC disabled
  3106.  F002h    APPC busy
  3107.  F003h    APPC abended
  3108.  F004h    incomplete
  3109.  
  3110. Values for error code:
  3111.  0001h bad TP ID
  3112.  0002h bad conversation ID
  3113.  0004h allocation error, no retry
  3114.  0005h allocation error, retry
  3115.  0006h data area crosses segment boundary
  3116.  0010h bad TPN length
  3117.  0011h bad CONV length
  3118.  0012h bad SYNC level
  3119.  0013h bad security selection
  3120.  0014h bad return control
  3121.  0015h SEC_TOKENS too big
  3122.  0016h PIP_LEN incorrect
  3123.  0017h no use of SNASVCMG
  3124.  0018h unknown partner mode
  3125.  0031h confirm: SYNC_NONE
  3126.  0032h confirm: bad state
  3127.  0033h confirm: NOT_LL_BDY
  3128.  0041h confirmed: bad state
  3129.  0051h deallocate: bad type
  3130.  0052h deallocate: flush bad state
  3131.  0053h deallocate: confirm bad state
  3132.  0055h deallocate: NOT_LL_BDY
  3133.  0057h deallocate: log LL_WRONG
  3134.  0061h flush: not send state
  3135.  0091h post on receipt: invalid length
  3136.  0092h post on receipt: not in receive state
  3137.  0093h post on receipt: bad fill
  3138.  00A1h prepare to receive:invalid type
  3139.  00A2h prepare to receive: unfinished LL
  3140.  00A3h prepare to receive: not in send state
  3141.  00B1h receive and wait: bad state
  3142.  00B2h receive and wait: NOT_LL_BDY
  3143.  00B5h receive and wait: bad fill
  3144.  00C1h receive immediate: not in receive state
  3145.  00C4h receive immediate: bad fill
  3146.  00E1h request to send: not in receive state
  3147.  00F1h send data: bad LL
  3148.  00F2h send data: not in send state
  3149.  0102h send error: log LL wrong
  3150.  0103h send error: bad type
  3151.  0121h test: invalid type
  3152.  0122h test: not in receive state
  3153. ----------6803-------------------------------
  3154. INT 68 - APPC/PC
  3155.     AH = 03h
  3156.     DS:DX -> control block (see below)
  3157.  
  3158. Format of control block:
  3159. Offset    Size    Description
  3160.  00h 12 BYTEs    reserved
  3161.  0Ch    WORD    verb (action)
  3162.  0Eh  6 BYTEs    0
  3163.  14h    DWORD    (high byte first) return code (see AH=01h)
  3164.  18h    WORD    0
  3165.  1Ah  8 BYTEs    (high byte first) logical unit ID
  3166. ---if verb=2400h (TP Started), control block continues---
  3167.  22h  8 BYTEs    (high byte first) TP ID
  3168. ---if verb=2800h (Get ALLOCATE), control block continues---
  3169.  22h    BYTE    type
  3170.         00h dequeue
  3171.         01h test
  3172.  23h    DWORD    pointer to CREATE_TP record
  3173. ---if verb=2A00h (Change Logical Unit). control block continues---
  3174.  22h    DWORD    pointer to CREATE_TP_EXIT routine
  3175.         FFFFFFFFh reject incoming ALLOCATEs
  3176.         00000000h queue ALLOCATEs
  3177.  26h    DWORD    00000000h
  3178.  2Ah    DWORD    pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh= don't log errors
  3179.  2Eh    DWORD    00000000h
  3180.  32h    BYTE    maximum TPs
  3181.  33h    BYTE    00h stop QUEUE_ALLOCATEs
  3182.         01h resume QUEUE_ALLOCATEs
  3183.  34h    DWORD    pointer to LU_LU_PASSWORD_EXIT routine, FFFFFFFFh = no exit
  3184.  38h    DWORD    00000000h
  3185. ----------6804-------------------------------
  3186. INT 68 - APPC/PC
  3187.     AH = 04h
  3188.     DS:DX -> control block (see below)
  3189.  
  3190. Format of control block:
  3191. Offset    Size    Description
  3192.  00h 12 BYTEs    reserved
  3193.  0Ch    WORD    verb (action)
  3194.         2500h TP_ENDED
  3195.         2900h TP_VALID
  3196.  0Eh  6 BYTEs    0
  3197.  14h    DWORD    (high byte first) return code (see AH=01h)
  3198.  18h    WORD    0
  3199.  1Ah  8 BYTEs    (high byte first) TP_ID
  3200.  22h    DWORD -> CREATE_TP record (only if verb = 2900h)
  3201. ----------6805-------------------------------
  3202. INT 68 - APPC/PC - TRANSFER MSG DATA
  3203.     AH = 05h
  3204.     DS:DX -> control block (see below)
  3205.  
  3206. Format of control block:
  3207. Offset    Size    Description
  3208.  00h 12 BYTEs    reserved
  3209.  0Ch    WORD    1C00h
  3210.  0Eh    BYTE    00h user defined
  3211.         01h NMVT
  3212.         02h alert subvectors
  3213.         03h PDSTATS subvectors
  3214.  0Fh  5 BYTEs    0
  3215.  14h    DWORD    (high byte first) return code (see AH=01h)
  3216.  18h 12 BYTEs    0
  3217.  24h    BYTE    if bit 0 clear, add correlation subvector
  3218.         if bit 1 clear, add product set ID subvector
  3219.         if bit 2 clear, do SYSLOG
  3220.         if bit 3 clear, send SSCP_PU_SESSION
  3221.  25h    BYTE    0
  3222.  26h    WORD    length of data
  3223.  28h  N BYTEs    data
  3224. ----------6806-------------------------------
  3225. INT 68 - APPC/PC - CHANGE NUMBER OF SESSIONS
  3226.     AH = 06h
  3227.     DS:DX -> control block (see below)
  3228.  
  3229. Format of control block:
  3230. Offset    Size    Description
  3231.  00h 12 BYTEs    reserved
  3232.  0Ch    WORD    1500h
  3233.  0Eh  6 BYTEs    0
  3234.  14h    WORD    (high byte first) primary return code (see AH=02h)
  3235.  16h    DWORD    (high byte first) secondary return code (see below, AH=01h)
  3236.  1Ah  8 BYTEs    (high byte first) logical unit ID
  3237.  22h  8 BYTEs    blanks
  3238.  2Ah  8 BYTEs    (high byte first) partner logical unit name
  3239.  32h  8 BYTEs    (high byte first) mode name
  3240.  3Ah    BYTE    bit 7: use MODE_NAME_SELECT_ALL rather than MODE_NAME
  3241.         bit 6: set negotiable values
  3242.  3Bh    BYTE    partner logical unit mode session limit
  3243.  3Ch    BYTE    minimum CONWINNERS_SOURCE
  3244.  3Dh    BYTE    maximum CONWINNERS_TARGET
  3245.  3Eh    BYTE    automatic activation
  3246.  3Fh    BYTE    0
  3247.  40h    BYTE    bit 7: drain target
  3248.         bit 6: drain source
  3249.         bit 5: target responsible, not source
  3250.  
  3251. Values for secondary return code (see also AH=01h):
  3252.   0000h accepted
  3253.   0001h negotiated
  3254.   0003h bad logical unit ID
  3255.   0004h allocation failure, no retry
  3256.   0005h allocation failure, retry
  3257.   0151h can't raise limits
  3258.   0153h all modes must reset
  3259.   0154h bad SNASVCMG limits
  3260.   0155h minimum greater than total
  3261.   0156h mode closed (prim return code = 1)
  3262.     CNOS mode closed (prim return code = 18h)
  3263.   0157h bad mode name (prim return code = 1)
  3264.     CNOS bad mode name (prim return code = 18h)
  3265.   0159h reset SNA drains
  3266.   015Ah single not SRC response
  3267.   015Bh bad partner logical unit
  3268.   015Ch exceeds maximum allowed
  3269.   015Dh change SRC drains
  3270.   015Eh logical unit detached
  3271.   015Fh CNOS command race reject
  3272. ----------6807-------------------------------
  3273. INT 68 - APPC/PC - PASSTHROUGH
  3274.     AH = 07h
  3275.     DS:DX -> control block (format depends on application subsystem)
  3276. ----------68FA-------------------------------
  3277. INT 68 - APPC/PC - ENABLE/DISABLE APPC
  3278.     AH = FAh
  3279.     AL bit 0 = 0 enable
  3280.            1 disable
  3281. ----------68FB-------------------------------
  3282. INT 68 - APPC/PC - CONVERT
  3283.     AH = FBh
  3284.     DS:DX -> control block (see below)
  3285.  
  3286. Format of control block:
  3287. Offset    Size    Description
  3288.  00h 12 BYTEs    reserved
  3289.  0Ch    WORD    1A00h
  3290.  0Eh  6 BYTEs    0
  3291.  14h    DWORD    (high byte first) return code
  3292.  18h    BYTE    conversion
  3293.            00h ASCII to EBCDIC
  3294.            01h EBCDIC to ASCII
  3295.  19h    BYTE    character set
  3296.            00h AE
  3297.            01h A
  3298.            02h G
  3299.  1Ah    WORD    length of string to convert
  3300.  1Ch    DWORD    pointer to source
  3301.  20h    DWORD    pointer to target
  3302. ----------68FC-------------------------------
  3303. INT 68 - APPC/PC - ENABLE/DISABLE MESSAGE TRACING
  3304.     AH = FCh
  3305.     AL = 00h disable tracing
  3306.        = 01h enable tracing
  3307.         DX = number of bytes to keep (0=all)
  3308. SeeAlso: AH=FDh
  3309. ----------68FD-------------------------------
  3310. INT 68 - APPC/PC - ENABLE/DISABLE API VERB TRACING
  3311.     AH = FDh
  3312.     AL = 00h disable tracing
  3313.          01h enable tracing
  3314. SeeAlso: AH=FCh,AH=FEh
  3315. ----------68FE-------------------------------
  3316. INT 68 - APPC/PC - SET TRACE DESTINATION
  3317.     AH = FEh
  3318.     AL = trace destinations
  3319.         bit 0  storage (DS:DX -> trace stats record)
  3320.         bit 1  display
  3321.         bit 2  file (trace written to file OUTPUT.PC)
  3322.         bit 3  printer
  3323. SeeAlso: AH=FDh
  3324.  
  3325. Format of Trace Statistics Record:
  3326. Offset    Size    Description
  3327.  00h    DWORD    pointer to storage trace buffer
  3328.  04h    WORD    max number of 80-byte records in trace
  3329.  06h    WORD    (high-order byte first!) current record number (must init to 0)
  3330.  08h    DWORD    (high-order byte first!) number of records written (init to 0)
  3331.  0Ch    DWORD    reserved
  3332. Note:    do not move record while trace is active
  3333. ----------68FF-------------------------------
  3334. INT 68 - APPC/PC - SET PASSTHROUGH
  3335.     AH = FFh
  3336.     DS:DX -> passthrough exit routine
  3337. ----------68---------------------------------
  3338. INT 68 - Sangoma CCPOP 3270 resident module
  3339. ----------69---------------------------------
  3340. INT 69 - Zenith AT BIOS - ???
  3341.    called by INT 09 handler
  3342. ----------690100-----------------------------
  3343. INT 69 - DECnet DOS CTERM - INSTALLATION CHECK
  3344.     AX = 0100h
  3345. Return: AL = FFh if present
  3346. SeeAlso: AX=010Fh
  3347. ----------690101-----------------------------
  3348. INT 69 - DECnet DOS CTERM - SEND BYTE
  3349.     AX = 0101h
  3350.     BL = character
  3351.     DX = session handle
  3352. Return: AH >= 80h on error
  3353. SeeAlso: AX=0102h
  3354. ----------690102-----------------------------
  3355. INT 69 - DECnet DOS CTERM - READ BYTE
  3356.     AX = 0102h
  3357.     DX = session handle
  3358. Return: AH >= 80h on error
  3359.     AH < 80h if successful
  3360.         AL = character
  3361. SeeAlso: AX=0101h
  3362. ----------690103-----------------------------
  3363. INT 69 - DECnet DOS CTERM - STATUS
  3364.     AX = 0103h
  3365.     DX = session handle
  3366. Return: AH status flags
  3367.         bit 7 session has been aborted
  3368.         6 DECnet error
  3369.         1 trace data available
  3370.         0 receive data available
  3371.     AL = reason code if DECnet error
  3372.         00h normal disconnect
  3373.         01h unknown message from host
  3374.         02h protocol violation from host
  3375.         03h could not process the initiate message
  3376.         04h error receiving message from host
  3377.         05h error sending message to host
  3378.         06h error checking for message from host
  3379.         07h remote system does not support CTERM
  3380.         08h remote system does not support correct protocol version
  3381.         09h did not receive BIND message from host
  3382.         0Ah could not send BIND message to host
  3383.         0Bh no more sessions available
  3384.         0Ch session does not exist
  3385.         0Dh not enough memory to complete operation
  3386.         0Eh connection has broken
  3387. SeeAlso: AX=0104h
  3388. ----------690104-----------------------------
  3389. INT 69 - DECnet DOS CTERM - DECnet STATUS
  3390.     AX = 0104h
  3391.     DX = session handle
  3392. Return: AX = reason code (see AX=0103h)
  3393. Note:    use this call when AX=0103h returns a DECnet error
  3394. SeeAlso: AX=0103h
  3395. ----------690105-----------------------------
  3396. INT 69 - DECnet DOS CTERM - OPEN SESSION
  3397.     AX = 0105h
  3398.     DS:BX -> ASCIZ node name
  3399.     ES:DX -> buffer for session control block (see INT 6A/AH=D0h)
  3400. Return: AX <= 0 on error
  3401.     AX > 0 session handle
  3402. SeeAlso: AX=0103h,AX=0106h,AX=010Ah
  3403. ----------690106-----------------------------
  3404. INT 69 - DECnet DOS CTERM - CLOSE SESSION
  3405.     AX = 0106h
  3406.     DX = session handle
  3407. Return: AH = 00h good close
  3408.        other error code (see AX=0103h)
  3409. SeeAlso: AX=0103h,AX=0105h
  3410. ----------69010A-----------------------------
  3411. INT 69 - DECnet DOS CTERM - GET SESSION CONTROL BLOCK SIZE
  3412.     AX = 010Ah
  3413. Return: AX = length of session control block in bytes
  3414. SeeAlso: AX=0105h
  3415. ----------69010B-----------------------------
  3416. INT 69 - DECnet DOS CTERM - GET DECnet SOCKET
  3417.     AX = 010Bh
  3418.     DX = session handle
  3419. Return: AX > 0    DECnet socket for the session
  3420.        = 0    no match for handle
  3421. ----------69010F-----------------------------
  3422. INT 69 - DECnet DOS CTERM - DEINSTALL CTERM
  3423.     AX = 010Fh
  3424. Return: AH = 00h succesful uninstall
  3425.        other error code
  3426. Note:    CTERM must have been the last TSR loaded in order to deinstall it
  3427. SeeAlso: AX=0100h
  3428. ----------6A---------------------------------
  3429. INT 6A - OPTHELP.COM
  3430. Notes:    OPTHELP is an optionally-resident help system for SLR Systems's OPTASM
  3431.       assembler
  3432.     may be configured to use any interrupt from 60h to 7Fh (default 6Ah)
  3433. ----------6A---------------------------------
  3434. INT 6A - DECnet DOS - LOCAL AREA TRANSPORT PROGRAM
  3435. Note:    the 3 bytes preceding the interrupt handler are "LAT"; this serves as
  3436.       the installation check
  3437. ----------6A01--DHFF-------------------------
  3438. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - SEND BYTE
  3439.     AH = 01h
  3440.     DH = FFh
  3441.     AL = character
  3442.     DL = handle
  3443. Return: AH >= 80h on error
  3444. SeeAlso: AH=02h
  3445. ----------6A02--DHFF-------------------------
  3446. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - READ BYTE
  3447.     AH = 02h
  3448.     DH = FFh
  3449.     DL = handle
  3450. Return: AH < 80h if successful
  3451.         AL = character
  3452.     AH >= 80h on error
  3453. SeeAlso: AH=01h
  3454. ----------6A03--DHFF-------------------------
  3455. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - STATUS
  3456.     AH = 03h
  3457.     DH = FFh
  3458.     DL = handle
  3459. Return: AH = status flags
  3460.         bit 5 transmit buffer empty
  3461.         3 session in start state
  3462.         2 session not active
  3463.         1 unable to queue transmit data
  3464.         0 receive data available
  3465. ----------6AD0--DHFF-------------------------
  3466. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - OPEN SESSION
  3467.     AH = D0h
  3468.     DH = FFh
  3469.     AL = FFh no password
  3470.        = 0Fh password at ES:DI
  3471.     ES:BX -> LAT session control block (see below)
  3472.     ES:DI -> 16-byte blank-padded password
  3473. Return: AH = 00h success
  3474.         DL = handle
  3475. SeeAlso: AX=D000h
  3476.  
  3477. Format of LAT Session Control Block:
  3478. Offset    Size    Description
  3479.  00h 18 BYTEs    service name
  3480.  12h 18 BYTEs    node name (future use)
  3481.  24h 18 BYTEs    port name (future use)
  3482.  36h    DWORD    -> session stopped post routine
  3483.  3Ah    DWORD    -> service table overflow post routine
  3484.  3Eh    DWORD    -> transmit post routine
  3485.  42h    DWORD    -> receive post routine
  3486.  46h    WORD    session status
  3487.         04h circuit failure
  3488.         08h stop slot received
  3489.  48h    WORD    slot state (LAT driver use)
  3490.  4Ah    WORD    local credits (LAT driver use)
  3491.  4Ch    DWORD    -> VCB (LAT driver use)
  3492.  50h    WORD    backward slot (LAT driver use)
  3493.  52h    WORD    forward slot (LAT driver use)
  3494.  54h    WORD    remote slot ID (LAT driver use)
  3495.  56h    WORD    local slot ID (LAT driver use)
  3496.  58h    WORD    slot byte count (LAT driver use)
  3497.  5Ah    BYTE    remote credits (LAT driver use)
  3498.  5Bh 255 BYTEs    transmitted data slot
  3499. 15Ah    BYTE    number of receive data slots (4 recommended)
  3500. 15Bh    BYTE    number of occupied slots
  3501. 15Ch    BYTE    index of next receive slot to use
  3502. 15Dh    BYTE    index of current receive slot
  3503. 15Eh    WORD    pointer to first received character
  3504. 160h  N WORDs    pointers to receive slots (buffers); each is 259 bytes
  3505. Note:    set post routines to 0000h:0000h if polled operation will be used
  3506. ----------6AD000DHFF-------------------------
  3507. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - CLOSE SESSION
  3508.     AX = D000h
  3509.     DH = FFh
  3510.     DL = handle
  3511. Return: AX = 0000h successful
  3512.        = 0001h no such session
  3513.        = 0002h session not running, try again later
  3514. SeeAlso: AH=D0h
  3515. ----------6AD100DHFF-------------------------
  3516. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - SEND BREAK
  3517.     AX = D100h
  3518.     DH = FFh
  3519.     DL = handle
  3520. Return: AX = 0000h if successful
  3521.     AH bit 7 set is unable to send break
  3522. ----------6AD300DHFF-------------------------
  3523. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - RESET LAT COUNTERS
  3524.     AX = D300h
  3525.     DH = FFh
  3526. SeeAlso: AX=D400h
  3527. ----------6AD400DHFF-------------------------
  3528. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - COPY LAT COUNTERS
  3529.     AX = D400h
  3530.     DH = FFh
  3531.     CX = buffer size
  3532.     ES:BX -> buffer for LAT counters
  3533. Return: AX = 0000h counters copied into buffer
  3534.        = FFFFh buffer too small
  3535. SeeAlso: AX=D300h
  3536. ----------6AD500DHFF-------------------------
  3537. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - GET NEXT LAT SERVICE NAME
  3538.     AX = D500h
  3539.     DH = FFh
  3540.     ES:BX -> 17-byte buffer for name
  3541. Return: AH = 00h if successful
  3542.        ES:BX buffer filled
  3543.     AX = FFFFh if end of table or no name available
  3544. Notes:    use this function to get the names of the hosts on the network
  3545.     successive calls are necessary to get all names
  3546. SeeAlso: AX=D600h
  3547. ----------6AD600DHFF-------------------------
  3548. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - LAT SERVICE TABLE RESET
  3549.     AX = D600h
  3550.     DH = FFh
  3551. Return: AX = number of service table entries
  3552.     BX = 0000h service table has not overflowed
  3553.        = FFFFh service table has overflowed
  3554. SeeAlso: AX=D500h
  3555. ----------6B0000-----------------------------
  3556. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - BUFFERED WRITE
  3557.     AX = 0000h
  3558.     CX = length
  3559.     ES:BX -> buffer
  3560. Return: CX = number of bytes written
  3561. SeeAlso: AX=0100h,INT 14/AH=19h
  3562. ----------6B0100-----------------------------
  3563. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - BUFFERED READ
  3564.     AX = 0100h
  3565.     CX = length of buffer
  3566.     ES:BX -> buffer
  3567. Return: CX = number of bytes read
  3568. SeeAlso: AX=0000h,INT 14/AH=18h,INT 14/AX=FF02h
  3569. ----------6B02-------------------------------
  3570. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - INSTALL CHECK
  3571.     AH = 02h
  3572.     AL nonzero
  3573. Return: AL = 00h if present and OK
  3574. SeeAlso: AX=0700h
  3575. ----------6B0600-----------------------------
  3576. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - CONTROL
  3577.     AX = 0600h
  3578.     CX = command
  3579.         02h send break
  3580.         04h disconnect
  3581.         06h hold
  3582. ----------6B0700-----------------------------
  3583. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - GET STATUS
  3584.     AX = 0700h
  3585. Return: CH <> 00h if connection active
  3586. SeeAlso: AH=02h
  3587. ----------6B6B-------------------------------
  3588. INT 6B - Tandy SCHOOLMATE PLUS - API
  3589.     AH = 6Bh
  3590.     AL = E0h to FFh
  3591. ----------6B---------------------------------
  3592. INT 6B - "Saddam" virus - ???
  3593. SeeAlso: INT 21/AX=FFFFh,INT 60"virus",INT 70"virus"
  3594. ----------6C---------------------------------
  3595. INT 6C - system resume vector (CONVERTIBLE)
  3596. ----------6C---------------------------------
  3597. INT 6C - DOS 3.2 Realtime Clock update
  3598. ----------6D---------------------------------
  3599. INT 6D - VGA - internal
  3600. Note:    used by IBM, Paradise, Video7, and NCR
  3601. ----------6D---------------------------------
  3602. INT 6D - ATI VGA Wonder - VIDEO BIOS ENTRY POINT
  3603.    points at the original INT 10 entry point set up by the ATI BIOS
  3604. SeeAlso: INT 10
  3605. ----------6D---------------------------------
  3606. INT 6D - DECnet DOS - DATA LINK LAYER PROGRAM
  3607. ----------6E---------------------------------
  3608. INT 6E - DECnet DOS - DECnet NETWORK PROCESS API
  3609. Notes:    this is the main DECnet DOS access, and is described in Digital manual
  3610.       AA-EB46B-TV ("DECnet-DOS Programmer's Reference Manual")
  3611.     there is a signature/data area immediately prior to the interrupt
  3612.       handler which may be used as an installation check
  3613.  
  3614. Format of signature area:
  3615. Offset    Size    Description
  3616.  -5    BYTE    major version number
  3617.  -4    BYTE    minor version number
  3618.  -3   3 BYTEs    signature (ASCII "DNP")
  3619. ----------6F----BP0012-----------------------
  3620. INT 6F - HP ES-12 EXTENDED BIOS - READ CMOS MEMORY
  3621.     BP = 0012h
  3622.     AH = 22h
  3623.     BL = address of CMOS byte to read
  3624. Return: AH = status
  3625.     AL = byte read
  3626.     BP, DS destroyed
  3627. SeeAlso: BP=0012h/AH=24h
  3628. ----------6F----BP0012-----------------------
  3629. INT 6F - HP ES-12 EXTENDED BIOS - WRITE CMOS MEMORY
  3630.     BP = 0012h
  3631.     AH = 24h
  3632.     BL = address of CMOS byte to write
  3633.     AL = new value
  3634. Return: AH = status
  3635.     BP, DS destroyed
  3636. SeeAlso: BP=0012h/AH=22h
  3637. ----------6F---------------------------------
  3638. INT 6F - Novell NetWare - PCOX API (3270 PC terminal interface)
  3639. ----------6F00-------------------------------
  3640. INT 6F - 10-NET - LOGIN
  3641.     AH = 00h
  3642.     DS:DX -> login record (see below)
  3643. Return: CL = security level
  3644.     AX = status
  3645.         0000h successful
  3646.         01FFh time out on response
  3647.         02FFh network (hardware) error
  3648.         03FFh invalid password
  3649.         04FFh local rexource not available
  3650.         05FFh server resource not available
  3651.         06FFh already logged in under different name
  3652.         07FFh login security failure (node)
  3653.         08FFh not logged in
  3654.         09FFh position calc error
  3655.         0AFFh receive subfunction not = send subfunction (i.e. read, write)
  3656.         0BFFh request function not in range
  3657.         0CFFh no more server file handle entries left
  3658.         0DFFh no more shared file table entries left
  3659.         0EFFh no more user file handle entries left
  3660.         0FFFh chat permit not on
  3661.         10FFh not a server on request
  3662.         11FFh no transporter board error
  3663.         12FFh time out on send
  3664.         13FFh item not found (spool item not on queue)
  3665.         14FFh dos access incompatible
  3666.         15FFh record already locked
  3667.         16FFh invalid parameter
  3668.         17FFh record lock time out error
  3669.         18FFh currently spooling to named device
  3670.         19FFh dropped receive message (throttle)
  3671.         1AFFh open sharing violation
  3672.         1BFFh no more tuf entries left
  3673.         1CFFh not file owner on open
  3674.         1DFFh read security not passed
  3675.         1EFFh write security not passed
  3676.         1FFFh group security not passed
  3677.         20FFh security file failure
  3678.         21FFh activity file failure
  3679.         22FFh spool cntrl file failure
  3680.         23FFh device not mounted (spooling)
  3681.         24FFh spool file has not been terminated
  3682.         25FFh device not mounted or is not being shared
  3683.         26FFh duplicate node id
  3684.         27FFh file not found error
  3685.         28FFh no more files
  3686.         29FFh unknown internal system error
  3687.         2AFFh print queue is full or corrupted
  3688.         2BFFh invalid function
  3689.         2CFFh invalid handle
  3690.         2DFFh too many files opened
  3691.         2EFFh path not found
  3692.         2FFFh named file is active
  3693. /* I've gotten one submission which says FFxxh, and another with xxFFh */
  3694. /* I don't know which way around these should be, does somebody else know? */
  3695.         FF01h timeout
  3696.         FF02h network error
  3697.         FF03h invalid password
  3698.         FF04h no local buffer
  3699.         FF05h superstation not available
  3700.         FF06h node already logged in
  3701.         FF07h login not valid from this node
  3702.         FF08h node ID already in use
  3703.         FF16h invalid parameter (bad length, invalid node ID, etc)
  3704.         FF17h record locked by another user
  3705.         FF18h sent message has been dropped
  3706. SeeAlso: AH=01h
  3707.  
  3708. Format of login record:
  3709. Offset    Size    Description
  3710.  00h  8 BYTEs    user name
  3711.  08h  8 BYTEs    password
  3712.  10h 12 BYTEs    name of SuperStation
  3713. ----------6F01-------------------------------
  3714. INT 6F - 10-NET - LOGOFF
  3715.     AH = 01h
  3716.     DS:DX -> superstation ID or nulls (12 bytes)
  3717. Return: CX = number of files closed
  3718.     AX = status (see AH=00h)
  3719.         FF08h superstation ID not already logged in
  3720. SeeAlso: AH=00h
  3721. ----------6F02-------------------------------
  3722. INT 6F - 10-NET - STATUS OF NODE
  3723.     AH = 02h
  3724.     DS:DX -> 512-byte status record (see below)
  3725. Return: CF set on error
  3726.         AX = error code (see AH=00h)
  3727.     CF clear if successful
  3728.  
  3729. Format of node status record:
  3730. Offset    Size    Description
  3731.  00h  8 BYTEs    user name (0 if none)
  3732.  08h    BYTE    station type
  3733.            00h workstation
  3734.            01h superstation
  3735.            02h gateway station
  3736.            03h gateway active
  3737.            04h logged into multiple superstations
  3738.            05h reserved
  3739.  09h 24 BYTEs    list of superstations logged into more than one superstation
  3740.  21h 12 BYTEs    node ID
  3741.  2Dh    WORD    message count for this station (send for user node, receive for
  3742.         superstations)
  3743. ---for superstations only---
  3744.  2Fh    WORD    drives allocated (bit 0=A:, bit 1=B:,...)
  3745.  31h    BYTE    user service flag
  3746.         bit 7: gate
  3747.             6: print permit on
  3748.             4: SUBMIT is on
  3749.             3: mail waiting for node
  3750.             2: calendar waiting for you
  3751.             1: news waiting for you
  3752.             0: mail waiting for you
  3753.  32h    BYTE    printers allocated (bit 0=LPT1,...)
  3754.  33h    BYTE    number of unprinted spool files
  3755.  34h    BYTE    number of opened files
  3756.  35h    BYTE    number of logged on nodes
  3757.  36h    BYTE    primary drive (1=A:)
  3758.  37h    BYTE    reserved
  3759.  38h  N BYTEs    list of logged on node IDs (each 12 bytes, max 37 IDs)
  3760. 1F4h  3 BYTEs    time: sec/min/hrs
  3761. 1F7h  3 BYTEs    date: day/mon/year-1980
  3762. ----------6F03-------------------------------
  3763. INT 6F - 10-NET - GET ADDRESS OF CONFIGURATION TABLE
  3764.     AH = 03h
  3765.     DS:DI -> node ID (optional)
  3766. Return: ES:BX -> configuration table 
  3767. SeeAlso: AH=13h
  3768.  
  3769. Format of configuration table:
  3770. Offset    Size    Description
  3771. -41    WORD    local device table address
  3772. -39    WORD    extended network error mapping table address
  3773. -37    WORD    shared device table address
  3774. -35    WORD    mounted device table address
  3775. -33    BYTE    receive buffer counter
  3776. -32    BYTE    collect buffer counter
  3777. -31    WORD    TUF address
  3778. -29    BYTE    enable flag
  3779. -28    BYTE    FCB keep flag
  3780. -27    WORD    reserved
  3781. ---up to here, 10-Net v3.3---
  3782. -25    WORD    count of dropped Send6F
  3783. -23    WORD    buffer start address
  3784. -21    WORD    comm driver base address
  3785. -19    WORD    send/receive retry count
  3786. -17    BYTE    number of 550ms loops before timeout
  3787. -16    WORD    UFH address
  3788. -14    WORD    CDIR address
  3789. -12    WORD    LTAB address
  3790. -10    WORD    SFH address
  3791. -8    WORD    FTAB address
  3792. -6    WORD    RLTAB address
  3793. -4    WORD    SMI address
  3794. -2    WORD    NTAB address
  3795.  00h    WORD    address of first CT_DRV
  3796.  02h    BYTE    number of DRV entries
  3797.  03h  8 BYTEs    login name
  3798.  0Bh 12 BYTEs    node ID (blank-padded)
  3799.  17h  6 BYTEs    node address
  3800.  1Dh    BYTE    flag
  3801.  1Eh    BYTE    CT_CFLG (chat permit)
  3802.         bit 1: sound bell
  3803.         bit 0: CHAT permit
  3804.  1Fh    BYTE    CT_PSFLG
  3805.         bit 5: PRINT permit
  3806.         bit 4: KB initiated
  3807.         bit 3: CHAT called FOXPTRM
  3808.         bit 2: SUBMIT active
  3809.         bit 1: SUBMIT received
  3810.         bit 0: SUBMIT permit
  3811.  20h    BYTE    in 10Net flag
  3812.  21h    WORD    receive message count
  3813.  23h    WORD    send message count
  3814.  25h    WORD    retry count
  3815.  27h    WORD    failed count
  3816.  29h    WORD    driver errors
  3817.  2Bh    WORD    dropped responses/CHATs
  3818.  2Dh  9 BYTEs    LIST ID/NTAB address (3 entries--LPT1-3)
  3819.  36h  6 BYTEs    AUX ID/NTAB address (2 entries--COM1-2)
  3820.  3Ch    BYTE    active CB channel
  3821.  3Dh    BYTE    received 6F messages on queue
  3822.  3Eh  9 BYTEs    activity counters for channels 1-9
  3823. ---beyond here, 10-Net v3.3---
  3824.  47h    BYTE    bit 0 = RS232 gate
  3825.             1 = Send6F gate (user set)
  3826.  48h    DWORD    pointer into gate (user set)
  3827.  4Ch    DWORD    pointer into 10Net send
  3828.  50h  N WORDs    addresses of timer blocks
  3829. ----------6F04-------------------------------
  3830. INT 6F - 10-NET - SEND
  3831.     AH = 04h
  3832.     DS:BX -> record
  3833.         12 BYTEs receiving node's ID
  3834.             if first byte has high-order bit set, message is
  3835.                directed to the CT_RGATE vector at the receiver
  3836.             if second byte is 00h, first byte is taken as a CB
  3837.                channel number and delivered to all nodes on same
  3838.                channel
  3839.            WORD     length of data at DX
  3840.     DS:DX -> data (max 1024 bytes)
  3841. Return: CF set on error
  3842.         AX = error code (see AH=00h)
  3843.     CF clear if successful
  3844. SeeAlso: AH=05h
  3845. ----------6F05-------------------------------
  3846. INT 6F - 10-NET - RECEIVE
  3847.     AH = 05h
  3848.     CX = number of seconds before timeout
  3849.     DS:DX -> receive buffer (see below)
  3850. Return: CF set on error
  3851.         AX = error code (see AH=00h)
  3852.     CF clear if successful
  3853.         AH = FEh if dequeued message is a CB message
  3854. SeeAlso: AH=04h
  3855.  
  3856. Format of receive buffer:
  3857. Offset    Size    Description
  3858.  00h 12 BYTEs    sending node's ID
  3859.  0Ch    WORD    length of message
  3860.  0Eh  N BYTEs    message (maximum 1024 bytes)
  3861. ----------6F07-------------------------------
  3862. INT 6F - 10-NET - LOCK HANDLE
  3863.     AH = 07h
  3864.     BX = file handle
  3865.     CX:DX = starting offset in file
  3866.     SI = record length
  3867. Return: CF set on error
  3868.         AX = error code (see also AH=00h)
  3869.         0002h file not found
  3870.     CF clear if successful
  3871. SeeAlso: AH=08h,INT 21/AH=5Ch
  3872. ----------6F08-------------------------------
  3873. INT 6F - 10-NET - UNLOCK HANDLE
  3874.     AH = 08h
  3875.     BX = file handle
  3876.     AL = mode
  3877.         00h unlock all
  3878.         01h unlock record at CX:DX
  3879. Return: CF set on error
  3880.         AX = error code (see also AH=00h)
  3881.         0002h file not found
  3882.     CF clear if successful
  3883. SeeAlso: AH=07h,INT 21/AH=5Ch
  3884. ----------6F09-------------------------------
  3885. INT 6F - 10-NET - SUBMIT
  3886.     AH = 09h
  3887.     DS:BX -> submit record (see below)
  3888.  
  3889. Format of submit record:
  3890. Offset    Size    Description
  3891.  00h 12 BYTEs    destination node ID (must be logged in)
  3892.  0Ch    WORD    length+2 of following 'command line' text
  3893.  0Eh  N BYTEs    command line text (<=100 bytes), system adds CR
  3894. ----------6F0A-------------------------------
  3895. INT 6F - 10-NET - CHAT
  3896.     AH = 0Ah
  3897.     DS:BX -> control parameters (see below)
  3898.     DS:DX -> chat message (see below)
  3899.  
  3900. Format of control parameters:
  3901. Offset    Size    Description
  3902.  00h  8 BYTEs    sender ID, defaults to node's userID if nulls
  3903.  08h  8 BYTEs    destination user ID, 'EVERYONE' may be used
  3904.  10h 12 BYTEs    destination node ID
  3905.  
  3906. Format of chat message:
  3907. Offset    Size    Description
  3908.  00h    WORD    length+2 of following text
  3909.  02h  N BYTEs    text, max 101 bytes
  3910. ----------6F0B-------------------------------
  3911. INT 6F - 10-NET - LOCK SEMAPHORE, RETURN IMMEDIATELY
  3912.     AH = 0Bh
  3913.     AL = drive number or 0
  3914.     ES:SI = Ethernet address or 0
  3915.     DS:BX -> 31-byte ASCIZ semaphore name
  3916. Return: AL = status
  3917.         00h successful
  3918.         01h semaphore currently locked
  3919.         02h server not responding
  3920.         03h invalid semaphore name
  3921.         04h semaphore list is full
  3922.         05h invalid drive ID
  3923.         06h invalid Ethernet address
  3924.         07h not logged in
  3925.         08h write to network failed
  3926.         09h semaphore already logged in this CPU
  3927. Note:    same as INT 60/AH=12h
  3928. SeeAlso: AH=0Ch,INT 60/AH=12h
  3929. ----------6F0C-------------------------------
  3930. INT 6F - 10-NET - UNLOCK SEMAPHORE
  3931.     AH = 0Ch
  3932.     AL = drive number or 0
  3933.     ES:SI = Ethernet address or 0
  3934.     DS:BX -> 31-byte ASCIZ semaphore name
  3935. Return: AL = status (see also AH=0Bh)
  3936.         01h semaphore not locked
  3937. Note:    same as INT 60/AH=13h
  3938. SeeAlso: AH=0Bh,INT 60/AH=13h
  3939. ----------6F0D-------------------------------
  3940. INT 6F - 10-NET - WHO
  3941.     AH = 0Dh
  3942.     AL = type code
  3943.         01h return superstations only
  3944.         02h return non-superstations only
  3945.         otherwise return all
  3946.     CX = length of data
  3947.     DS:DX -> array of records to be filled (see below)
  3948. Return: CL = number of records returned (responding stations)
  3949.  
  3950. Format of station record:
  3951. Offset    Size    Description
  3952.  00h 12 BYTEs    node ID
  3953.  0Ch    BYTE    flags
  3954.         bit 1 = workstation
  3955.             2 = superstation
  3956.             3 = xgate
  3957.             4 = active gate
  3958. ---if AL = 01h---
  3959.  0Dh    BYTE    version number
  3960.     WORD    level number of 10Net software in responding node
  3961. ---if AL = 02h---
  3962.  0Dh  8 BYTEs    user ID
  3963.  15h    BYTE    version number
  3964.  16h    WORD    level number
  3965. ----------6F0E-------------------------------
  3966. INT 6F - 10-NET - SPOOL/PRINT
  3967.     AH = 0Eh
  3968.     DS:DX -> spool/print record (see below)
  3969. Return: CF set on error
  3970.         AX = error code (see also AH=00h)
  3971.         FF17h device not mounted
  3972.         FF18h already spooling to named device
  3973.     CF clear if successful
  3974.  
  3975. Format of Spool/Print record:
  3976. Offset    Size    Description
  3977.  00h    WORD    operation code
  3978.            00h initiate spool
  3979.            01h abort print
  3980.            02h close spool
  3981.            03h delete spool
  3982.            04h print
  3983.            05h get report info
  3984.            06h set chat template
  3985.            07h queue
  3986.            08h return queue
  3987.            09h queue non-spooled file for printing
  3988.  02h 11 BYTEs    file name in FCB format
  3989. ---if operation code = 00h or 06h---
  3990.  0Dh    BYTE    notification
  3991.         bit 7: queue to top
  3992.         bit 6: do ID page
  3993.         bit 5: no form feed
  3994.         bit 4: reserved
  3995.         bit 3: explicity queuing only
  3996.         bit 2: notify at print completion
  3997.         bit 1: notify server operator/reply
  3998.         bit 0: notify at print start
  3999.  0Eh    BYTE    days to keep (FFh=forever)
  4000.  0Fh    BYTE    bits 0,1: device (1=LPT1)
  4001.         bits 4-7: remote drive to store spool file (1=A,...)
  4002.  10h    WORD    length of following data area
  4003.  12h  N BYTEs    up to 64 bytes of description
  4004. ---if operation code = 03h---
  4005.  0Dh  8 BYTEs    user ID to associate with filename
  4006. ---if operation code = 04h---
  4007.  0Dh    WORD    block number
  4008.  0Fh  8 BYTEs    user ID to associate with filename
  4009. ---if operation code = 05h---
  4010.  0Dh    BYTE    RRN to start retrieve
  4011.  0Eh    BYTE    bits 0,1: local print device (LPTx)
  4012.         bit 3: if set, return entries for all users
  4013.  0Fh    WORD    length of following area
  4014.  11h  N BYTEs    up to 1500 bytes to receive $SCNTL records returned
  4015. ---if operation code = 07h---
  4016.  0Dh    BYTE    queue number
  4017.  0Eh    BYTE    bits 0,1: local print device (LPTx)
  4018.  0Fh    WORD    number of bytes of test print to be done
  4019.  11h    BYTE    code: 01h print device
  4020.               02h test print count
  4021.               03h prn
  4022. ---if operation code = 08h---
  4023.  0Dh    BYTE    queue location or $SCNTL location to start access
  4024.             returns next item for access:
  4025.                 00h-7Fh queued items
  4026.                 80h-FEh non-queued, non-printed items
  4027.                 FFh    no more items
  4028.  0Eh    WORD    unused
  4029.  10h    WORD    length of following area
  4030.  12h  N BYTEs    up to 64 bytes to receive $SCNTL records
  4031. ---if operation code = 09h---
  4032.  0Dh  3 BYTEs    unused
  4033.  10h  N BYTEs    path to non-spooled file to be queued for printing
  4034.  
  4035. Format of $SCNTL record:
  4036. Offset    Size    Description
  4037.  00h  8 BYTEs    user ID
  4038.  08h 11 BYTEs    filename in FCB format
  4039.  13h  6 BYTEs    node ID
  4040.  19h  3 BYTEs    creation date
  4041.  1Ch    BYTE    flags
  4042.         bit 7: queue to top
  4043.             6: do ID page
  4044.             5: no form feed at end
  4045.             4: reserved
  4046.             3: explicit queueing only
  4047.             2: notify at completion
  4048.             1: notify server operator/reply
  4049.             0: notify at start
  4050.  1Dh    BYTE    retention time in days
  4051.  1Eh    BYTE    printing device (LPTx)
  4052.  1Fh  3 BYTEs    date last printed (0 = never)
  4053.  22h    BYTE    device containing spoolfile
  4054.  23h    WORD    bytes to print for test print
  4055.  25h    WORD    block number to start print
  4056.  27h    BYTE    reserved
  4057. ----------6F10-------------------------------
  4058. INT 6F - 10-NET - ATTACH/DETACH PRINTER
  4059.     AH = 10h
  4060.     AL = subfunction
  4061.         00h initiate spooling if LPT1 is mounted
  4062.         01h terminate spooling if LPT1 is mounted
  4063. SeeAlso: INT 21/AX=5D08h
  4064. ----------6F11-------------------------------
  4065. INT 6F - 10-NET - LOCK FCB
  4066.     AH = 11h
  4067.     AL = mode
  4068.         01h sequential
  4069.         02h random
  4070.         03h random block
  4071.         CX = number of records
  4072.     DS:DX -> FCB (see INT 21/AH=0Fh)
  4073. Return: CF set on error
  4074.         AX = error code (see also AH=00h)
  4075.         2 file not found
  4076.     CF clear if successful
  4077. SeeAlso: AH=12h
  4078. ----------6F12-------------------------------
  4079. INT 6F - 10-NET - UNLOCK FCB
  4080.     AH = 12h
  4081.     AL = mode
  4082.         00h sequential
  4083.         01h random
  4084.         02h random block
  4085.         CX = number of records
  4086.     DS:DX -> FCB (see INT 21/AH=0Fh)
  4087. Return: CF set on error
  4088.         AX = error code (see also AH=00h)
  4089.         2 file not found
  4090.     CF clear if successful
  4091. SeeAlso: AH=11h
  4092. ----------6F13-------------------------------
  4093. INT 6F - 10-NET v3.3 - GET REMOTE CONFIGURATION TABLE ADDRESS
  4094.     AH = 13h
  4095.     DS:DX -> node ID, 12 bytes blank-padded
  4096. Return: CF set on error
  4097.         AX = error code (see AH=00h)
  4098.     CF clear if successful
  4099.         ES:BX = configuration table address on given machine
  4100. SeeAlso: AH=03h
  4101. ----------6F14-------------------------------
  4102. INT 6F - 10-NET v3.3 - GET REMOTE MEMORY
  4103.     AH = 14h
  4104.     BX:SI = address of remote memory
  4105.     CX = length (<=1024 bytes)
  4106.     DS:DX -> node ID, 12 bytes blank-padded
  4107.     DS:DI -> area to receive remote memory image
  4108. Return: CF set on error
  4109.         AX = error code (see AH=00h)
  4110.     CF clear if successful
  4111.         CX = amount of memory copied to DS:SI
  4112. ----------6F1501-----------------------------
  4113. INT 6F - 10-NET v3.3 - GET SHARED DEVICE ENTRY
  4114.     AX = 1501h
  4115.     BX = zero-based index
  4116.     DS:SI -> node ID, 12 bytes blank-padded
  4117.     ES:DI -> 85-byte buffer for shared device table entry (see below)
  4118. Return: CF set on error
  4119.         AX = error code (see AH=00h)
  4120.     CF clear if successful
  4121.         ES:DI buffer contains shared device table entry of BXth device:
  4122. SeeAlso: AX=1502h,AX=1503h
  4123.  
  4124. Format of shared device table entry:
  4125. Offset    Size    Description
  4126.  00h  8 BYTEs    device
  4127.  08h  8 BYTEs    alias
  4128.  10h 64 BYTEs    path
  4129.  50h  8 BYTEs    password
  4130.  58h    BYTE    access
  4131.  59h  4 BYTEs    mask
  4132. ----------6F1502-----------------------------
  4133. INT 6F - 10-NET v3.3 - SET SHARED DEVICE ENTRY
  4134.     AX = 1502h
  4135.     DS:SI -> node ID, 12 bytes blank-padded
  4136.     ES:DI -> valid shared device table entry
  4137. Return: CF set on error
  4138.         AX = error code (see AH=00h)
  4139.     CF clear if successful
  4140. SeeAlso: AX=1501h,AX=1503h
  4141. ----------6F1503-----------------------------
  4142. INT 6F - 10-NET v3.3 - DELETE SHARED DEVICE ENTRY
  4143.     AX = 1503h
  4144.     BX = zero-based index
  4145.     DS:SI -> node ID, 12 bytes blank-padded
  4146. Return: CF set on error
  4147.         AX = error code (see AH=00h)
  4148.     CF clear if successful
  4149. SeeAlso: AX=1501h,AX=1502h
  4150. ----------6F17-------------------------------
  4151. INT 6F - 10-NET v3.3 - MOUNT
  4152.     AH = 17h
  4153.     AL = local drive number (0=A:)
  4154.     BL = remote drive letter or '1'..'3' for LPTn or '4' or '5' for COMx
  4155.     DS:DX -> node ID, 12 bytes blank-padded
  4156. Return: CF set on error
  4157.         AX = error code (see AH=00h)
  4158.     CF clear if successful
  4159. SeeAlso: AH=18h
  4160. ----------6F18-------------------------------
  4161. INT 6F - 10-NET v3.3 - UNMOUNT
  4162.     AH = 18h
  4163.     AL = local drive number (0=A:)
  4164.     BL = type
  4165.         00h        disk
  4166.         01h-03h LPTn
  4167.         04h,05h COMx
  4168. Return: CF set on error
  4169.         AX = error code (see AH=00h)
  4170.     CF clear if successful
  4171. SeeAlso: AH=17h
  4172. ----------70---------------------------------
  4173. INT 70 - IRQ8 - CMOS REAL-TIME CLOCK
  4174. Notes:    this interrupt is called when the real-time clock chip generates an
  4175.       alarm or periodic interrupt, among others.  The periodic interrupt
  4176.       occurs 1024 times per second, although many BIOSes turn it off in
  4177.       the INT 70h handler unless in an event wait (see INT 15/AH=83h or
  4178.       INT 15/AH=86h).
  4179.     may be masked by setting bit 0 on I/O port A1h
  4180. SeeAlso: INT 08,INT 15/AH=01h"Amstrad",INT 15/AH=83h,INT 15/AH=86h
  4181. SeeAlso: INT 1A/AH=02h,INT 58
  4182. ----------70---------------------------------
  4183. INT 70 - "Stupid" virus - ???
  4184. SeeAlso: INT 6B"virus",INT E0"virus"
  4185. ----------71---------------------------------
  4186. INT 71 - IRQ9 - REDIRECTED TO INT 0A BY BIOS
  4187. Notes:    may be masked by setting bit 1 on I/O port A1h
  4188.     the default BIOS handler invokes INT 0A for compatibility, since the
  4189.       pin for IRQ2 on the PC expansion bus became the pin for IRQ9 on the
  4190.       AT expansion bus.
  4191.     under DESQview, only the INT 15h vector and BASIC segment address (the
  4192.       word at 0000h:0510h) may be assumed to be valid for the handler's
  4193.       process
  4194. SeeAlso: INT 0A,INT 59
  4195. ----------72---------------------------------
  4196. INT 72 - IRQ10 - RESERVED
  4197. Note:    may be masked by setting bit 2 on I/O port A1h
  4198. SeeAlso: INT 5A
  4199. ----------73---------------------------------
  4200. INT 73 - IRQ11 - RESERVED
  4201. Note:    may be masked by setting bit 3 on I/O port A1h
  4202. SeeAlso: INT 5B
  4203. ----------74---------------------------------
  4204. INT 74 - IRQ12 - POINTING DEVICE (PS)
  4205. Notes:    may be masked by setting bit 4 on I/O port A1h
  4206.     under DESQview, only the INT 15h vector and BASIC segment address (the
  4207.       word at 0000h:0510h) may be assumed to be valid for the handler's
  4208.       process
  4209. SeeAlso: INT 33,INT 5C
  4210. ----------75---------------------------------
  4211. INT 75 - IRQ13 - MATH COPROCESSOR EXCEPTION (AT and up)
  4212.    redirected to INT 02 by the BIOS, for compatibility with the PC
  4213. Notes:    may be masked by setting bit 5 on I/O port A1h
  4214.     not all clones wire the coprocessor to generate this IRQ; some systems
  4215.       generate an NMI (see INT 02) or assert the -ERROR pin on the CPU
  4216.       (see INT 10"COPROCESSOR")
  4217.     under DESQview, only the INT 15h vector and BASIC segment address (the
  4218.       word at 0000h:0510h) may be assumed to be valid for the handler's
  4219.       process
  4220. SeeAlso: INT 10"COPROCESSOR",INT 5D
  4221. ----------76---------------------------------
  4222. INT 76 - IRQ14 - HARD DISK CONTROLLER (AT and later)
  4223. Note:    may be masked by setting bit 6 on I/O port A1h
  4224. SeeAlso: INT 0E"IRQ6",INT 5E
  4225. ----------77---------------------------------
  4226. INT 77 - IRQ15 - RESERVED (AT,PS)
  4227. Note:    may be masked by setting bit 7 on I/O port A1h
  4228. SeeAlso: INT 5F
  4229. ----------77---------------------------------
  4230. INT 77 - IRQ15 - POWER CONSERVATION (Compaq SLT/286)
  4231. Note:    may be masked by setting bit 7 on I/O port A1h
  4232. SeeAlso: INT 15/AX=4600h,INT 5F
  4233. ----------7800-------------------------------
  4234. INT 78 - TARGA.DEV - CMC International SCSI device driver - SET I/O PORT
  4235.     AH = 00h
  4236.     DX = interface board I/O port
  4237. Return:    CF set on error
  4238.         AL = error code
  4239.         00h illegal command given to SCSI code
  4240.         01h invalid I/O port specified (must be from 100H to 3F8H, and
  4241.             must be on an 8-port boundary)
  4242.         02h invalid DMA channel specified (must be from 1 to 3)
  4243.         03h invalid SCSI board number specified (must be from 0 to 7)
  4244.         04h error from data register test during self-test
  4245.         05h SCSI input signals not all 0 when SCSI RST activated
  4246.         06h SCSI input signals not all 0 before selecting a SCSI device
  4247.         07h BSY signal is active; SCSI bus is busy
  4248.         08h SCSI board not selected, BSY signal did not come on in
  4249.             response to raising SEL
  4250.         09h time-out waiting for status state, signifying end of DMA
  4251.             transfer
  4252. Note:    if this routine is not called, the port is the driver's default
  4253.       (usually 0280h or 0300h)
  4254.     an installation check is performed by TARGA.DEV upon initialization
  4255.       by checking for the string "SCSI" at offset 03h into the interrupt
  4256.       handler
  4257. SeeAlso: AH=01h,AH=02h
  4258. ----------7801-------------------------------
  4259. INT 78 - TARGA.DEV - GET I/O PORT
  4260.     AH = 01h
  4261. Return: DX = current interface board I/O port
  4262. SeeAlso: AH=00h,AH=03h"TARGA"
  4263. ----------7802-------------------------------
  4264. INT 78 - TARGA.DEV - SET DMA CHANNEL
  4265.     AH = 02h
  4266.     AL = interface board DMA channel
  4267. Return: CF set on error
  4268.     AL = error code (see AH=00h)
  4269. Note:    if this routine is not called, the DMA channel is the driver's default
  4270.       (usually 3)
  4271. SeeAlso: AH=00h,AH=03h"TARGA"
  4272. ----------7803-------------------------------
  4273. INT 78 - TARGA.DEV - GET DMA CHANNEL
  4274.     AH = 03h
  4275. Return: AL = current interface board DMA channel
  4276. SeeAlso: AH=01h,AH=02h
  4277. ----------7803-------------------------------
  4278. INT 78 - UofSalford DBOS DOS extender - SWITCH TO PROTECTED MODE
  4279.     AH = 03h
  4280.     ???
  4281. Return: ???
  4282. Note:    DBOS supports functions 00h through 50h
  4283. SeeAlso: AH=1Eh"DBOS",AH=22h"DBOS"
  4284. ----------7804-------------------------------
  4285. INT 78 - TARGA.DEV - SET SCSI DEVICE NUMBER
  4286.     AH = 04h
  4287.     AL = SCSI device number
  4288. Return: CF set on error
  4289.     AL = error code (see AH=00h)
  4290. Note:    if this routine is not called, the device number used is the driver's
  4291.       default (usually 0)
  4292. SeeAlso: AH=02h,AH=05h
  4293. ----------7805-------------------------------
  4294. INT 78 - TARGA.DEV - GET SCSI DEVICE NUMBER
  4295.     AH = 05h
  4296. Return: AL = current SCSI device number
  4297. SeeAlso: AH=03h"TARGA",AH=04h
  4298. ----------7806-------------------------------
  4299. INT 78 - TARGA.DEV - SET/CLEAR EARLY RETURN MODE
  4300.     AH = 06h
  4301.     AL = 00h clear early return mode
  4302.        = 01h set early return mode
  4303. Note:    if early return mode is set then SCSI will return with no errors
  4304.       when the last DMA transfer is started in a call with AH=13h or AH=14h
  4305.     if this routine is not called, early return mode is cleared
  4306. SeeAlso: AH=13h,AH=14h,AH=15h
  4307. ----------7808-------------------------------
  4308. INT 78 - TARGA.DEV - INTERFACE BOARD SELF-TEST
  4309.     AH = 08h
  4310. Return: CF set on error
  4311.     AL = error code (see AH=00h)
  4312. Note:    the SCSI bus is also reset
  4313. SeeAlso: AH=09h
  4314. ----------7809-------------------------------
  4315. INT 78 - TARGA.DEV - RESET SCSI BUS
  4316.     AH = 09h
  4317. Return: AL = error code if carry set (see AH=00h)
  4318. SeeAlso: AH=08h
  4319. ----------7810-------------------------------
  4320. INT 78 - TARGA.DEV - SEND SCSI COMMAND
  4321.     AH = 10h
  4322.     DS:SI -> command bytes
  4323. Return: AH = SCSI status byte
  4324.     CF clear if successful
  4325.         AL = SCSI message byte
  4326.     CF set on error
  4327.         AL = error code (see AH=00h)
  4328. SeeAlso: AH=11h
  4329.  
  4330. Format of SCSI Command:
  4331. Offset    Size    Description
  4332.  00h    BYTE    length of command
  4333.  01h    ???    command bytes
  4334. ----------7811-------------------------------
  4335. INT 78 - TARGA.DEV - SEND SCSI COMMAND, RECEIVE DATA (PROGRAMMED I/O)
  4336.     AH = 11h
  4337.     DS:SI -> command bytes
  4338.     ES:BX -> data storage area
  4339.     CX = number of data bytes to transfer
  4340. Return: AH = SCSI status byte
  4341.     CF clear if successful
  4342.         AL = SCSI message byte
  4343.     CF set on error
  4344.         AL = error code (see AH=00h)
  4345. Note:    this command receives data internally one byte at a time
  4346. SeeAlso: AH=10h,AH=13h
  4347.  
  4348. Format of SCSI Command:
  4349. Offset    Size    Description
  4350.  00h    BYTE    length of command
  4351.  01h    ???    command bytes
  4352. ----------7812-------------------------------
  4353. INT 78 - TARGA.DEV - SEND SCSI COMMAND AND DATA (PROGRAMMED I/O)
  4354.     AH = 12h
  4355.     DS:SI -> command bytes
  4356.     ES:BX -> data storage area
  4357.     CX = number of data bytes to transfer
  4358. Return: AH = SCSI status byte
  4359.     CF clear if successful
  4360.         AL = SCSI message byte
  4361.     CF set on error
  4362.         AL = error code (see AH=00h)
  4363. Note:    this command sends data internally one byte at a time
  4364. SeeAlso: AH=14h
  4365.  
  4366. Format of SCSI Command:
  4367. Offset    Size    Description
  4368.  00h    BYTE    length of command
  4369.  01h    ???    command bytes
  4370. ----------7813-------------------------------
  4371. INT 78 - TARGA.DEV - SEND SCSI COMMAND, RECEIVE DATA (DMA)
  4372.     AH = 13h
  4373.     DS:SI -> command bytes
  4374.     ES:BX -> data storage area
  4375.     DX:CX = number of data bytes to transfer
  4376. Return: AH = SCSI status byte (if early return mode is clear)
  4377.     CF clear if successful
  4378.         AL = SCSI message byte (if early return mode is clear)
  4379.     CF set on error
  4380.         AL = error code (see AH=00h)
  4381. Note:    this command receives data using DMA
  4382. SeeAlso: AH=11h,AH=12h
  4383.  
  4384. Format of SCSI Command:
  4385. Offset    Size    Description
  4386.  00h    BYTE    length of command
  4387.  01h    ???    command bytes
  4388. ----------7814-------------------------------
  4389. INT 78 - TARGA.DEV - SEND SCSI COMMAND AND DATA (DMA)
  4390.     AH = 14h
  4391.     DS:SI -> command bytes
  4392.     ES:BX -> data storage area
  4393.     DX:CX = number of data bytes to transfer
  4394. Return: AH = SCSI status byte (if early return mode is clear)
  4395.     CF clear if successful
  4396.         AL = SCSI message byte (if early return mode is clear)
  4397.     CF set on error
  4398.         AL = error code (see AH=00h)
  4399. Note:    this command sends data using DMA
  4400. SeeAlso: AH=12h,AH=13h
  4401.  
  4402. Format of SCSI Command:
  4403. Offset    Size    Description
  4404.  00h    BYTE    length of command
  4405.  01h    ???    command bytes
  4406. ----------7815-------------------------------
  4407. INT 78 - TARGA.DEV - FINISH DATA TRANSFER (DMA)
  4408.     AH = 15h
  4409. Return: AH = SCSI status byte
  4410.     CF clear if successful
  4411.         AL = SCSI message byte
  4412.     CF set on error
  4413.         AL = error code (see AH=00h)
  4414. Note:    if AH=06h was previously called to set the early return mode, this
  4415.       function finishes a command AH=13h or AH=14h which returned before
  4416.       the last DMA transfer was finished
  4417. SeeAlso: AH=06h,AH=13h,AH=14h
  4418. ----------781E-------------------------------
  4419. INT 78 - UofSalford DBOS DOS extender - SET REAL-MODE MEMORY SIZE
  4420.     AH = 1Eh
  4421.     ???
  4422. Return: ???
  4423. Notes:    specifies how much real-mode memory to leave free when running FTN77
  4424.       programs
  4425.     DBOS supports functions 00h through 50h
  4426. SeeAlso: AH=03h"DBOS",AH=22h"DBOS"
  4427. ----------7822-------------------------------
  4428. INT 78 - UofSalford DBOS DOS extender - UNINSTALL
  4429.     AH = 22h
  4430.     ???
  4431. Return: ???
  4432. Note:    DBOS supports functions 00h through 50h
  4433. SeeAlso: AH=03h"DBOS",AH=1Eh"DBOS"
  4434. ----------79---------------------------------
  4435. INT 79 - AVATAR.SYS - FAST GET KEYSTROKE
  4436. Return: CF set if no keystroke available
  4437.         AX = FFFFh
  4438.     CF clear if key pressed
  4439.         AX = keystroke
  4440. Notes:    if a keystroke is available, it is removed from the keyboard buffer
  4441.       before being returned
  4442.     AVATAR.SYS is a CON driver by George Adam Stanislav which interprets
  4443.       AVATAR command codes just as ANSI.SYS interprets ANSI commands
  4444. SeeAlso: INT 29
  4445. ----------7A---------------------------------
  4446. INT 7A - Topware Network Operating System - ???
  4447.     AL = ???
  4448.     ???
  4449. Return: ???
  4450. ----------7A---------------------------------
  4451. INT 7A - AutoCAD Device Interface
  4452.     ???
  4453. ----------7A---------------------------------
  4454. INT 7A - Novell NetWare - LOW-LEVEL API - Notes
  4455. Note:    this interrupt is used for IPX/SPX access in NetWare versions through
  4456.       2.0a; in later versions, you should use INT 2F/AX=7A00h to get an
  4457.       entry point.    For both INT 7A and the FAR entry point, BX contains
  4458.       the function number; IPX is sometimes called internally with BX bit
  4459.       15 set.
  4460. SeeAlso: INT 2F/AX=7A00h,INT 64"Novell"
  4461. ----------7A----BX0000-----------------------
  4462. INT 7A - Novell NetWare Low-Level API (IPX) Driver - OPEN SOCKET
  4463.     BX = 0000h
  4464.     AL = mode
  4465.         00h open until close or terminate
  4466.         FFh open until close
  4467.     DX = socket number (high byte in DL)
  4468.         0000h dynamic allocation
  4469.         else  socket to open
  4470. Return: AL = return code
  4471.         00h success
  4472.         DX = socket number
  4473.         FEh socket table full
  4474.         FFh socket already open
  4475. SeeAlso: BX=0001h
  4476. ----------7A----BX0001-----------------------
  4477. INT 7A - Novell NetWare Low-Level API (IPX) Driver - CLOSE SOCKET
  4478.     BX = 0001h
  4479.     DX = socket (high byte in DL)
  4480. SeeAlso: BX=0000h
  4481. ----------7A----BX0002-----------------------
  4482. INT 7A - Novell NetWare Low-Level API (IPX) Driver - GET LOCAL TARGET
  4483.     BX = 0002h
  4484.     ES:SI -> target internetwork address
  4485.     ES:DI -> 6-byte buffer for local target
  4486. Return: AL = return code
  4487.         00h success
  4488.            CX = expected one-way transfer time (clock ticks)
  4489.            ES:DI -> local target
  4490.         FAh unsuccessful
  4491. Note:    The internetwork address consists of a 4-byte network address followed
  4492.       by a 6-byte node address.  The local target is only a 6-byte node
  4493.       address.  If the target is in the same network, the local target is
  4494.       just the node address of target; otherwise, the local target is the
  4495.       node address of the bridge that leads to the target.
  4496. SeeAlso: BX=0009h
  4497. ----------7A----BX0003-----------------------
  4498. INT 7A - Novell NetWare Low-Level API (IPX) Driver - SEND PACKET
  4499.     BX = 0003h
  4500.     ES:SI -> Event Control Block (see below)
  4501. SeeAlso: BX=0004h,BX=000Fh
  4502.  
  4503. Format of Event Control Block:
  4504. Offset    Size    Description
  4505.  00h    DWORD    Link
  4506.  04h    DWORD    -> Event Service Routine (00000000h if none)
  4507.  08h    BYTE    in use flag
  4508.  09h    BYTE    completion code
  4509.  0Ah    WORD    socket (high byte first [big-endian])
  4510.  0Ch  4 BYTES    IPX workspace
  4511.  10h 12 BYTES    driver workspace
  4512.  1Ch  6 BYTES    immediate local node address
  4513.  22h    WORD    fragment count
  4514.  26h    var    fragment descriptors
  4515.         Offset    Size    Description
  4516.          00h    DWORD    -> fragment data
  4517.          04h    WORD    size of fragment in bytes.
  4518. Notes:    ESR is a far procedure that is called when the ECB has been handled.
  4519.       On call, the in use flag is zero if the ECB has been handled,
  4520.       non-zero otherwise. If the flag is zero, the completion code holds
  4521.       the result of the event:
  4522.         00h success
  4523.         F9h event should not be cancelled
  4524.         FCh cancelled
  4525.         FDh malformed packet
  4526.         FEh packet undeliverable
  4527.         FFh physical error
  4528.     the first fragment should start with an IPX header
  4529.     all fragments are concatenated and sent in one piece
  4530.     node address FF FF FF FF FF FF broadcasts to all nodes
  4531.  
  4532. Event Service Routine called with:
  4533.     AL = caller's identity (00h = AES, FFh = IPX)
  4534.     ES:SI -> event control block
  4535.     interrupts disabled
  4536.  
  4537. Format of IPX header:
  4538. Offset    Size    Description
  4539.  00h    WORD    checksum (high byte first [big-endian])
  4540.  02h    WORD    length in bytes (high byte first) of total packet
  4541.  04h    BYTE    transport control
  4542.  05h    BYTE    packet type
  4543.         00h unknown packet type
  4544.         01h routing information packet
  4545.         02h echo packet
  4546.         03h error packet
  4547.         04h packet exchange packet (always use this one)
  4548.         05h SPX packet
  4549.         11h (used internally)
  4550.  06h 10 BYTES    destination internetwork address
  4551.  10h    WORD    destination socket (high byte first)
  4552.  12h 10 BYTES    source internetwork address
  4553.  1Ch    WORD    source socket
  4554. ----------7A----BX0004-----------------------
  4555. INT 7A - Novell NetWare Low-Level API (IPX) Driver - LISTEN FOR PACKET
  4556.     BX = 0004h
  4557.     ES:SI -> Event Control Block (see BX=0003h)
  4558. SeeAlso: BX=0003h
  4559. ----------7A----BX0005-----------------------
  4560. INT 7A - Novell NetWare Low-Level API (IPX) Driver - SCHEDULE IPX EVENT
  4561.     BX = 0005h
  4562.     AX = delay time
  4563.     ES:SI -> Event Control Block (see BX=0003h)
  4564. SeeAlso: BX=0006h,BX=0007h
  4565. ----------7A----BX0006-----------------------
  4566. INT 7A - Novell NetWare Low-Level API (IPX) Driver - CANCEL EVENT
  4567.     BX = 0006h
  4568.     ES:SI -> Event Control Block (see BX=0003h)
  4569. Return: AL = return code
  4570.         00h success
  4571.         F9h event in use
  4572.         FFh unsuccessful, event not in use
  4573. SeeAlso: BX=0005h
  4574. ----------7A----BX0007-----------------------
  4575. INT 7A - Novell NetWare Low-Level API (IPX) Driver - SCHEDULE SPECIAL EVENT
  4576.     BX = 0007h
  4577.     AX = delay time
  4578.     ES:SI -> Event Control Block (see BX=0003h)
  4579. SeeAlso: BX=0006h
  4580. ----------7A----BX0008-----------------------
  4581. INT 7A - Novell NetWare Low-Level API (IPX) Driver - GET INTERVAL MARKER
  4582.     BX = 0008h
  4583. Return: AX = interval marker in clock ticks
  4584. ----------7A----BX0009-----------------------
  4585. INT 7A - Novell NetWare Low-Level API (IPX) Driver - GET INTERNETWORK ADDRESS
  4586.     BX = 0009h
  4587.     ES:SI -> 10-byte buffer
  4588. Return: ES:SI -> own internetwork address
  4589. SeeAlso: BX=0002h,BX=000Bh
  4590. ----------7A----BX000A-----------------------
  4591. INT 7A - Novell NetWare Low-Level API (IPX) Driver - RELINQUISH CONTROL
  4592.     BX = 000Ah
  4593. Note:    this call permits the IPX driver to do some work
  4594. ----------7A----BX000B-----------------------
  4595. INT 7A - Novell NetWare Low-Level API (IPX) Driver - DISCONNECT FROM TARGET
  4596.     BX = 000Bh
  4597.     ES:SI -> internetwork address
  4598. Note:    only use in point-to-point networks
  4599. SeeAlso: BX=0002h,BX=0009h
  4600. ----------7A----BX000C-----------------------
  4601. INT 7A - Novell NetWare Low-Level API (IPX) Driver - INTERNAL
  4602.     BX = 000Ch
  4603.     ???
  4604. Return: ???
  4605. ----------7A----BX000D-----------------------
  4606. INT 7A - Novell NetWare Low-Level API (IPX) Driver - INTERNAL
  4607.     BX = 000Dh
  4608.     ???
  4609. Return: ???
  4610. ----------7A----BX000E-----------------------
  4611. INT 7A - Novell NetWare Low-Level API (IPX) Driver - INTERNAL
  4612.     BX = 000Eh
  4613.     ???
  4614. Return: ???
  4615. ----------7A----BX000F-----------------------
  4616. INT 7A - Novell NetWare Low-Level API (IPX) Driver - INTERNAL - SEND PACKET
  4617.     BX = 000Fh
  4618.     ES:SI -> Event Control Block (see BX=0003h)
  4619. Note:    similar to function 0003h, but apparently does not allow multiple
  4620.       fragments
  4621. SeeAlso: BX=0003h
  4622. ----------7A----BX0010-----------------------
  4623. INT 7A - Novell NetWare Low-Level API (IPX) Driver - SPX INSTALLACTION CHECK
  4624.     BX = 0010h
  4625.     AL = 00h
  4626. Return: AL = FFh if SPX loaded
  4627. SeeAlso: BX=0015h
  4628. ----------7A----BX0011-----------------------
  4629. INT 7A - Novell NetWare Low-Level API (IPX) Driver - ESTABLISH SPX CONNECTION
  4630.     BX = 0011h
  4631.     AL = retry count
  4632.     AH = watchdog flag
  4633.     ES:SI -> Event Control Block (see BX=0003h)
  4634. Return: DX = assigned connection number
  4635. Notes:    there should always be at least two SPX ECB's listening to a socket, so
  4636.       that NetWare can perform its internal packet exchanges
  4637.     The first fragment should start with a SPX header.  Fill in all
  4638.       destination addresses.
  4639. SeeAlso: BX=0000h,BX=0012h,BX=0013h,BX=0014h
  4640.  
  4641. Format of SPX header:
  4642. Offset    Size    Description
  4643.  00h    WORD    checksum (high byte first [big-endian])
  4644.  02h    WORD    length in bytes of total packet (high byte first)
  4645.  04h    BYTE    transport control
  4646.  05h    BYTE    packet type
  4647.  06h 10 BYTEs    destination internet address
  4648.  10h    WORD    destination socket (high byte first)
  4649.  12h 10 BYTEs    source internet address
  4650.  1Ch    WORD    source socket (high byte first)
  4651.  1Eh    BYTE    connection control
  4652.  1Fh    BYTE    datastreamtype
  4653.  20h    WORD    source connection ID
  4654.  22h    WORD    destination connection ID
  4655.  24h    WORD    sequence number
  4656.  26h    WORD    acknowledge number
  4657.  28h    WORD    allocation number
  4658. ----------7A----BX0012-----------------------
  4659. INT 7A - Novell NetWare Low-Level API (IPX) Driver - LISTEN FOR SPX CONNECTION
  4660.     BX = 0012h
  4661.     AL = retry count
  4662.     AH = watchdog flag
  4663.     ES:SI -> Event Control Block (see BX=0003h)
  4664. Notes:    there should always be at least two SPX ECB's listening to a socket, so
  4665.       that NetWare can perform its internal packet exchanges
  4666. SeeAlso: BX=0011h,BX=0013h,BX=0014h
  4667. ----------7A----BX0013-----------------------
  4668. INT 7A - Novell NetWare Low-Level API (IPX) Driver - TERMINATE SPX CONNECTION
  4669.     BX = 0013h
  4670.     DX = connection ID to terminate
  4671.     ES:SI -> Event Control Block (see BX=0003h)
  4672. SeeAlso: BX=0011h,BX=0012h,BX=0014h
  4673. ----------7A----BX0014-----------------------
  4674. INT 7A - Novell NetWare Low-Level API (IPX) Driver - ABORT SPX CONNECTION
  4675.     BX = 0014h
  4676.     DX = connection ID to terminate
  4677. Note:    this function does not tell the other side that the connection has been
  4678.       terminated
  4679. SeeAlso: BX=0011h,BX=0013h
  4680. ----------7A----BX0015-----------------------
  4681. INT 7A - Novell NetWare Low-Level API (IPX) Driver - GET SPX STATUS
  4682.     BX = 0015h
  4683.     DX = connection ID
  4684.     ES:SI -> status buffer (see below)
  4685. Return: AL = return code
  4686.         00h connection still valid
  4687.         ES:SI -> status buffer filled
  4688. SeeAlso: BX=0010h
  4689.  
  4690. Format of status buffer:
  4691. Offset    Size    Description
  4692.  00h    BYTE    status
  4693.  01h    BYTE    flag
  4694.  02h    WORD    source connection (high byte first [big-endian])
  4695.  04h    WORD    destination connection (high byte first)
  4696.  06h    WORD    sequence number (high byte first)
  4697.  08h    WORD    acknowledge number (high byte first)
  4698.  0Ah    WORD    allocation number (high byte first)
  4699.  0Ch    WORD    remote acknowledge number (high byte first)
  4700.  0Eh    WORD    remote allocation number (high byte first)
  4701.  10h    WORD    connection socket (high byte first)
  4702.  12h  6 BYTEs    immediate node address
  4703.  18h 10 BYTEs    destination internet address
  4704.  22h    WORD    retransmit count (high byte first)
  4705.  24h    WORD    estimated roundtrip delay
  4706.  26h    WORD    retransmitted packets
  4707.  28h    WORD    suppressed packets
  4708. ----------7A----BX0016-----------------------
  4709. INT 7A - Novell NetWare Low-Level API (IPX) Driver - SEND SPX PACKET
  4710.     BX = 0016h
  4711.     DX = connection ID
  4712.     ES:SI -> Event Control Block (see BX=0003h)
  4713. Note:    CX may need to be 0001h ???
  4714. SeeAlso: BX=0011h,BX=0017h
  4715. ----------7A----BX0017-----------------------
  4716. INT 7A - Novell NetWare Low-Level API (IPX) Driver - LISTEN FOR SPX PACKET
  4717.     BX = 0017h
  4718.     DX = connection ID
  4719.     ES:SI -> Event Control Block (see BX=0003h)
  4720. Note:    CX may need to be 0001h ???
  4721. SeeAlso: BX=0011h,BX=0016h
  4722. ----------7A----BX0018-----------------------
  4723. INT 7A - Novell NetWare Low-Level API (IPX) Driver - INTERNAL
  4724.     BX = 0018h
  4725.     ???
  4726. Return: ???
  4727. ----------7A----BX0019-----------------------
  4728. INT 7A - Novell NetWare Low-Level API (IPX) Driver - INTERNAL
  4729.     BX = 0019h
  4730.     ???
  4731. Return: ???
  4732. ----------7A----BX001A-----------------------
  4733. INT 7A - Novell NetWare Low-Level API (IPX) Driver - INTERNAL
  4734.     BX = 001Ah
  4735.     ???
  4736. Return: ???
  4737. ----------7A----BX001B-----------------------
  4738. INT 7A - Novell NetWare Low-Level API (IPX) Driver - INTERNAL
  4739.     BX = 001Bh
  4740.     ???
  4741. Return: ???
  4742. ----------7A04-------------------------------
  4743. INT 7A - IBM 3270 Workstation Program API - CREATE A QUEUE
  4744.     AH = 04h
  4745.     ???
  4746. Return: ???
  4747. SeeAlso: AH=06h
  4748. ----------7A06-------------------------------
  4749. INT 7A - IBM 3270 Workstation Program API - DELETE A QUEUE
  4750.     AH = 06h
  4751.     ???
  4752. Return: ???
  4753. SeeAlso: AH=04h
  4754. ----------7A09--BX8020-----------------------
  4755. INT 7A - IBM 3270 Workstation Program API - SESSION SERVICES
  4756.     AH = 09h
  4757.     BX = 8020h (synchronous request)
  4758.     CX = 0000h
  4759.     DX = ID of session manager (SESSMGR)
  4760.     AL = service
  4761.         01h get session ID
  4762.         02h get session info
  4763.         04h dettach from session
  4764.         05h attach to session
  4765.         06h get list of windows available
  4766.         07h get environment of window
  4767.         08h get 'PIF' (program information file) info
  4768.         0Ah get base window ID
  4769.         0Bh get cursor info
  4770.     ES:DI -> control block
  4771. Return: ???
  4772. ----------7A09--BX8020-----------------------
  4773. INT 7A - IBM 3270 Workstation Program API - KEYBOARD SERVICES
  4774.     AH = 09h
  4775.     BX = 8020h (synchronous request)
  4776.     CX = 0000h
  4777.     DX = ID of keyboard manager
  4778.     AL = service
  4779.         01h connect to keyboard
  4780.         02h disconnect from keyboard
  4781.         03h read from keyboard
  4782.         04h send keystroke to session
  4783.         05h disable input
  4784.         06h enable input
  4785.         07h update status code
  4786.     ES:DI -> control block
  4787. Return: ???
  4788. ----------7A09--BX8020-----------------------
  4789. INT 7A - IBM 3270 Workstation Program API - WINDOW SERVICES
  4790.     AH = 09h
  4791.     BX = 8020h (synchronous request)
  4792.     CX = 00FFh
  4793.     DX = ID of window service controller (WSCTRL)
  4794.     AL = service
  4795.         01h connect to WS control
  4796.         02h disconnect from WS control
  4797.         03h add a window
  4798.         04h change window's position on screen
  4799.         05h change window's size
  4800.         06h change window's color
  4801.         07h change window's position in the presentation space
  4802.         08h hide/unhide toggle
  4803.         09h enlarge/reduce toggle
  4804.         0Ah change screen background color
  4805.         0Bh get window's position on screen
  4806.         0Ch get window's size
  4807.         0Dh get window's color
  4808.         0Eh get window's position in the presentation space
  4809.         0Fh determine whether hidden
  4810.         10h determine whether enlarged
  4811.         11h get background color
  4812.         12h get window names
  4813.         13h delete all windows from profile
  4814.         14h pick active window
  4815.         15h redraw screen
  4816.         16h redraw window
  4817.         17h delete a window from profile
  4818.         18h get active window
  4819.         19h get active screen
  4820.         1Ah get window data
  4821.         1Bh change window data
  4822.         1Ch select active screen
  4823.     ES:DI -> control block
  4824. Return: ???
  4825. ----------7A09--BX8020-----------------------
  4826. INT 7A - IBM 3270 Workstation Program API - PRESENTATION SPACE SERVICES
  4827.     AH = 09h
  4828.     BX = 8020h
  4829.     CX = 00FFh
  4830.     DX = ID of PCPSM
  4831.     AL = service
  4832.         01h define presentation space
  4833.         02h delete presentation space
  4834.         03h display presentation space
  4835.         04h position cursor in presentation space
  4836.         05h change default presentation space
  4837.     ES:DI -> control block
  4838. Return: ???
  4839. ----------7A09--BX8020-----------------------
  4840. INT 7A - IBM 3270 Workstation Program API - 3270 EMULATION
  4841.     AH = 09h
  4842.     BX = 8020h
  4843.     CX = 00FFh
  4844.     DX = ID of 3270EML
  4845.     AL = service
  4846.         01h connect
  4847.         02h disconnect
  4848.     ES:DI -> control block
  4849. Return: ???
  4850. ----------7A09--BX8020-----------------------
  4851. INT 7A - IBM 3270 Workstation Program API - OPERATOR INFORMATION AREA
  4852.     AH = 09h
  4853.     BX = 8020h
  4854.     CX = 00FFh
  4855.     DX = ID of OIAM
  4856.     AL = service
  4857.         01h read Operator Information Area
  4858.         02h read OIA subset
  4859.     ES:DI -> control block
  4860. Return: ???
  4861. Note: the OIA is the 25th line on the Host session
  4862. ----------7A09--BX8020-----------------------
  4863. INT 7A - IBM 3270 Workstation Program API - TRANSLATE DATA
  4864.     AH = 09h
  4865.     BX = 8020h
  4866.     CX = 00FFh
  4867.     DX = ID of XLATE
  4868.     AL = service
  4869.         01h translate from host characters to ASCII and vice versa
  4870.         (determined by control block byte 11)
  4871.     ES:DI -> control block
  4872. Return: ???
  4873. ----------7A09--BX8020-----------------------
  4874. INT 7A - IBM 3270 Workstation Program API - COPY SERVICE
  4875.     AH = 09h
  4876.     BX = 8020h
  4877.     CX = 00FFh
  4878.     DX = ID of copy service
  4879.     AL = service
  4880.         01h copy string from one presentation space to another
  4881.         02h copy block from one presentation space to another
  4882.         03h connect to PC session for copy
  4883.         04h disconnect PC session from copy
  4884.     ES:DI -> control block
  4885. Return: ???
  4886. ----------7A09--BX8020-----------------------
  4887. INT 7A - IBM 3270 Workstation Program API - Multi-DOS
  4888.     AH = 09h
  4889.     BX = 8020h
  4890.     CX = 00FFh
  4891.     ES:DI -> control block
  4892.     DX = ID of INDJQRY  
  4893.         get environment size
  4894.        = ID of INDJASY
  4895.         request DOS functions from workstation
  4896.        = ID of MEMORY
  4897.         AL = function
  4898.             01h allocate memory
  4899.             02h deallocate memory
  4900.             03h modify allocated size
  4901. Return: ???
  4902. ----------7A09-------------------------------
  4903. INT 7A - IBM 3270 Workstation Program API - HOST SERVICES
  4904.     AH = 09h
  4905.     BX = request type (4000h async, 8028h synchronous)
  4906.     CX = 0000h
  4907.     DX = ID of MFIC
  4908.     AL = service
  4909.        01h connect to host
  4910.        02h disconnect from host
  4911.        03h read DFT structured data from host
  4912.        04h write DFT structured data to host
  4913.        05h create a host buffer
  4914.     ES:DI -> control block
  4915. ----------7A13-------------------------------
  4916. INT 7A - IBM 3270 Workstation Program API - GET DATA FROM A QUEUE
  4917.     AH = 13h
  4918.     ???
  4919. Return: ???
  4920. ----------7A81-------------------------------
  4921. INT 7A - IBM 3270 Workstation Program API - RESOLVE A GATE NAME
  4922.     AH = 81h
  4923.     ES:DI -> 8-char blank-padded gate name
  4924.         "SESSMGR ", "KEYBOARD", "WSCTRL     ", "MFIC    ", "PCPSM     ",
  4925.         "3270EML ", "COPY    ", "XLATE     ", "OIAM    ", "MEMORY     ",
  4926.         "INDJQRY ", or "INDJASY "
  4927. Return: DX = gate ID
  4928. ----------7A83-------------------------------
  4929. INT 7A - IBM 3270 Workstation Program API - GET COMPLETION RESULTS
  4930.     AH = 83h
  4931.     ???
  4932. Return: ???
  4933. ----------7AFDCB-----------------------------
  4934. INT 7A - IBM Personal Communications/3270 - INSTALLATION CHECK
  4935.     AX = FDCBh
  4936. Return: DX:AX -> PCS/3270 signature block if loaded (see below)
  4937.  
  4938. Format of signature block:
  4939. Offset    Size    Description
  4940.  04h    WORD    PCS/3270 signature (5741h)
  4941.  06h    WORD    version (0501h = PCS/3270 v1.0)
  4942. ----------7AFE01-----------------------------
  4943. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL SEND/RECEIVE FUNCTION
  4944.     AX = FE01h
  4945.     ???
  4946. Return: ???
  4947. SeeAlso: AX=FE02h
  4948. ----------7AFE02-----------------------------
  4949. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL SEND/RECEIVE FUNCTION
  4950.     AX = FE02h
  4951.     ???
  4952. Return: ???
  4953. SeeAlso: AX=FE01h
  4954. ----------7AFF01-----------------------------
  4955. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL API INITIALIZATION
  4956.     AX = FF01h
  4957.     ES:DI -> API function handler routine
  4958. Return: CX = 1200h
  4959. SeeAlso: AX=FF02h,AX=FF03h
  4960. ----------7AFF02-----------------------------
  4961. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL API TERMINATION
  4962.     AX = FF02h
  4963. Return: CX = 1200h
  4964. SeeAlso: AX=FF01h
  4965. ----------7AFF03-----------------------------
  4966. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL API INITIALIZATION
  4967.     AX = FF03h
  4968.     ES:DI -> send/receive function handler routine
  4969. Return: CX = 1200h
  4970. SeeAlso: AX=FF01h
  4971. ----------7AFF04-----------------------------
  4972. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL ???
  4973.     AX = FF04h
  4974.     ES:DI -> ???
  4975. Return: CX = 1200h
  4976. ----------7B---------------------------------
  4977. INT 7B - Btrieve API
  4978.     DS:DX -> 38-byte parameter record (see below)
  4979. Return: return code field set
  4980. Note:    Btrieve sets low byte of vector to 33h; this serves as the installation
  4981.       check
  4982.  
  4983. Format of Btrieve parameter record:
  4984. Offset    Size    Description
  4985.  00h    DWORD    pointer to data buffer
  4986.  04h    WORD    data buffer length
  4987.  06h    DWORD    pointer to 90-byte record containing positioning info
  4988.         (should be same for all calls for same file)
  4989.  0Ah    DWORD    pointer to 38-byte FCB info buffer
  4990.         (should be same for all calls for same file)
  4991.  0Eh    WORD    function code (see below)
  4992.  10h    DWORD    pointer to file name/key buffer
  4993.  14h    BYTE    key length
  4994.  15h    BYTE    key number
  4995.  16h    DWORD    pointer to status code (see below)
  4996.  1Ah    WORD    interface code (version specific)
  4997.  
  4998. Values for function code:
  4999.  00h open
  5000.  01h close
  5001.  02h insert
  5002.  03h update
  5003.  04h delete
  5004.  05h get_equal
  5005.  06h get_next
  5006.  07h get_prev
  5007.  08h get_greater
  5008.  09h get_gr_eql
  5009.  0Ah get_less
  5010.  0Bh get_less_eq
  5011.  0Ch get_first
  5012.  0Dh get_last
  5013.  0Eh create
  5014.  0Fh stat
  5015.  10h extend
  5016.  11h set_dir: set directory information
  5017.  12h get_dir: get directory information
  5018.  13h begin_trans
  5019.  14h end_trans
  5020.  15h abort_trans
  5021.  16h get_pos: get record position number
  5022.  17h get_direct: get data by sending record position
  5023.  18h step_direct
  5024.  19h stop
  5025.  1Ah version
  5026.  1Bh unlock
  5027.  1Ch reset
  5028.  1Dh set owner
  5029.  1Eh clear owner
  5030.  1Fh create supplemental index
  5031.  20h drop supplemental index
  5032.  21h step first
  5033.  22h step last
  5034.  23h step next
  5035.  31h ???
  5036.  37h ???
  5037.  38h ???
  5038.  39h ???
  5039.  3Ah ???
  5040.  3Bh ???
  5041.  3Ch ???
  5042.  3Dh ???
  5043.  3Eh ???
  5044.  3Fh ???
  5045.  add 100 (64h) for a single-record wait lock (automatically released on next
  5046.         get)
  5047.  add 200 (C8h) for a single-record nowait lock (nowait lock returns error 54h
  5048.         or 55h if record already locked)
  5049.  add 300 (12Ch) for a multiple-record wait lock (not released until unlock
  5050.         called)
  5051.  add 400 (190h) for a multiple-record nowait lock (nowait lock returns error
  5052.         54h or 55h if record already locked)
  5053.  
  5054. Values for status code:
  5055.  00h successful
  5056.  01h invalid operation
  5057.  02h I/O error
  5058.  03h file not open
  5059.  04h key value not found
  5060.  05h duplicate key value
  5061.  06h invalid key number
  5062.  07h different key number
  5063.  08h invalid positioning
  5064.  09h end of file
  5065.  0Ah modifiable key value error
  5066.  0Bh invalid file name
  5067.  0Ch file not found
  5068.  0Dh extended file error
  5069.  0Eh pre-image open error
  5070.  0Fh pre-image I/O error
  5071.  10h expansion error
  5072.  11h close error
  5073.  12h disk full
  5074.  13h unrecoverable error
  5075.  14h record manager inactive
  5076.  15h key buffer too short
  5077.  16h data buffer length overrun
  5078.  17h position block length
  5079.  18h page size error
  5080.  19h create I/O error
  5081.  1Ah number of keys
  5082.  1Bh invalid key position
  5083.  1Ch invalid record length
  5084.  1Dh invalid key length
  5085.  1Eh not a Btrieve file
  5086.  1Fh file already extended
  5087.  20h extended I/O error
  5088.  22h invalid extension name
  5089.  23h directory error
  5090.  24h transaction error
  5091.  25h transaction is active
  5092.  26h transaction control file I/O error
  5093.  27h end/abort transaction error
  5094.  28h transaction max files
  5095.  29h operation not allowed
  5096.  2Ah incomplete accelerated access
  5097.  2Bh invalid record address
  5098.  2Ch null key path
  5099.  2Dh inconsistent key flags
  5100.  2Eh access to file denied
  5101.  2Fh maximum open files
  5102.  30h invalid alternate sequence definition
  5103.  31h key type error
  5104.  32h owner already set
  5105.  33h invalid owner
  5106.  34h error writing cache
  5107.  35h invalid interface
  5108.  36h variable page error
  5109.  37h autoincrement error
  5110.  38h incomplete index
  5111.  39h expanded memory error
  5112.  3Ah compression buffer too short
  5113.  3Bh file already exists
  5114.  50h conflict
  5115.  51h lock error
  5116.  52h lost position
  5117.  53h read outside transaction
  5118.  54h record in use
  5119.  55h file in use
  5120.  56h file table full
  5121.  57h handle table full
  5122.  58h incompatible open mode
  5123.  5Dh incompatible lock type
  5124.  5Eh permission error
  5125. ----------7B---------------------------------
  5126. INT 7B - Eicon Access API (3270/5250 gateways)
  5127. ----------7C---------------------------------
  5128. INT 7C - IBM REXX88PC command language
  5129.     ???
  5130. ----------7D---------------------------------
  5131. INT 7D - not used
  5132. ----------7E---------------------------------
  5133. INT 7E - RESERVED FOR DIP, Ltd. ROM LIBRARY
  5134. ----------7F---------------------------------
  5135. INT 7F - IBM XGA - ???
  5136. ----------7F---------------------------------
  5137. INT 7F - Halo88 - API
  5138.     BX = function
  5139.         64h arc
  5140.         65h bar
  5141.         66h box
  5142.         67h circle
  5143.         68h clr
  5144.         69h default hatch style
  5145.         6Ah default line style
  5146.         6Bh delhcur
  5147.         6Ch delln / deltcur
  5148.         6Dh ellipse
  5149.         6Eh fill
  5150.         6Fh flood
  5151.         70h flood2
  5152.         71h init graphics
  5153.         72h init hcur
  5154.         73h init marker
  5155.         74h init tcur
  5156.         75h inqarc
  5157.         76h inqbknd
  5158.         77h inqclr
  5159.         78h inqerr
  5160.         79h inqgcur
  5161.         7Ah inqhcur
  5162.         7Bh inqmarker
  5163.         7Dh inqtcur
  5164.         7Eh inqtext
  5165.         7Fh lnabs
  5166.         80h lnrel
  5167.         81h markerabs
  5168.         82h markerrel
  5169.         83h moveabs
  5170.         84h movehcurabs
  5171.         85h movehcurrel
  5172.         86h moverel
  5173.         87h movetcurabs
  5174.         88h movetcurrel
  5175.         89h movefrom
  5176.         8Ah moveto
  5177.         8Bh pie
  5178.         8Ch polylnabs
  5179.         8Dh polylnrel
  5180.         8Eh ptabs
  5181.         8Fh ptrel
  5182.         91h setasp
  5183.         92h set color
  5184.         93h set font
  5185.         94h set hatch style
  5186.         95h set line style
  5187.         97h settext
  5188.         98h set text color
  5189.         99h btext
  5190.         9Ah setseg
  5191.         9Bh display
  5192.         9Ch setscreen
  5193.         9Eh close graphics
  5194.         9Fh ftinit
  5195.         A0h ftlocate
  5196.         A1h ftext
  5197.         A5h set viewport
  5198.         A6h set window
  5199.         A7h set world
  5200.         AAh ftcolor
  5201.         ACh initlp
  5202.         ADh inqasp
  5203.         AEh inqdev
  5204.         AFh inqdisplay
  5205.         B0h inqft
  5206.         B1h inqftcolor
  5207.         B2h inqinterlace
  5208.         B3h inqlpa
  5209.         B4h inqlpg
  5210.         B5h inqmode
  5211.         B6h inqscreen
  5212.         B7h inqversion
  5213.         B8h roam
  5214.         B9h scroll
  5215.         BAh setieee
  5216.         BBh set interlace
  5217.         BCh shift
  5218.         BDh start graphics
  5219.         BEh vpan
  5220.         CBh gwrite
  5221.         CCh gread
  5222.         CDh setxor
  5223.         CEh rbox
  5224.         CFh rcir
  5225.         D0h rlnabs
  5226.         D1h rlnrel
  5227.         D2h delbox
  5228.         D3h delcir
  5229.         D5h setseg2
  5230.         DCh worldoff
  5231.         DDh mapwtod
  5232.         DEh mapdtow
  5233.         DFh mapwton
  5234.         E0h mapntow
  5235.         E1h mapdton
  5236.         E2h mapntod
  5237.         E3h inqworld
  5238.         E4h inqviewport
  5239.         E5h set line width
  5240.         E6h lnjoint
  5241.         E7h set locator
  5242.         E8h read locator
  5243.         E9h setdev
  5244.         EBh setstext
  5245.         ECh setstclr
  5246.         EDh setstang
  5247.         EEh stext
  5248.         EFh inqstext
  5249.         F0h setdegree
  5250.         F1h inqstsize
  5251.         F2h polyfabs
  5252.         F3h polyfrel
  5253.         F4h inqdrange
  5254.         F5h inqstang
  5255.         F6h orglocator
  5256.         F7h inqlocator
  5257.         F8h inqarea
  5258.         F9h setipal
  5259.         FAh setborder
  5260.         FBh inqcrange
  5261.         FEh setclip
  5262.         FFh fcir
  5263.            100h setcrange
  5264.            101h setdrange
  5265.            102h setlattr
  5266.            103h polycabs
  5267.            104h polycrel
  5268.            108h memcom
  5269.            109h memexp
  5270.            10Ah memmov
  5271.            10Eh movefx
  5272.            10Fh movetx
  5273.            110h inqrgb
  5274.            111h save image
  5275.            112h restore image
  5276.            113h setapal
  5277.            114h setxpal
  5278.            118h inqtsize
  5279.            12Eh gprint
  5280.            130h setprn
  5281.            131h setpattr
  5282.            133h setbattr
  5283.            135h pexpand
  5284.            136h ptnorm
  5285.            137h pfnorm
  5286.            13Bh inqprn
  5287.            13Ch lopen
  5288.            13Dh lclose
  5289.            13Eh lappend
  5290.            13Fh lrecord
  5291.            140h lswitch
  5292.            142h inqfun
  5293.            15Dh lsetup
  5294.            15Eh lrest
  5295.            15Fh lsave
  5296.     additional parameters on stack
  5297. Return: ???
  5298. Notes:    Halo88 is a suite of graphics routines
  5299.     according to Stuart Kemp, the code appears to make no provisions for
  5300.        chaining
  5301. ----------7F---------------------------------
  5302. INT 7F - CONVERGENT TECHNOLOGIES ClusterShare CTOS ACCESS VECTOR
  5303.     AL = request ID
  5304.         01h "Request"/"RequestDirect"
  5305.         ES:BX -> pRq
  5306.         DX ignored
  5307.         04h "Wait"
  5308.         ES:BX -> ppMsgRet
  5309.         DX = exchange
  5310.         05h "AllocExch"
  5311.         ES:BX -> pExchRet
  5312.         06h "DeAllocExch"
  5313.         DX = exchange
  5314.         07h "Check"
  5315.         ES:BX -> ppMsgRet
  5316.         DX = exchange
  5317.     CX = 4354h ('CT')
  5318. Return: AX = status
  5319.         0000h successful
  5320. ----------7F---------------------------------
  5321. INT 7F - Alloy 386/MultiWare (MW386), Novell-Type Network Executive (NTNX)
  5322. Notes:    the words at C800h:0000h and C800h:0002h will both be 584Eh if this
  5323.       multitasking system is present
  5324.     NTNX allows its API to be placed on a different interrupt than 7Fh at
  5325.       load time.  To determine the actual vector used, open the device
  5326.       "SPOOLER" with INT 21/AX=3D02h, place it in RAW mode with
  5327.       INT 21/AX=4400h and INT 21/AX=4401h, then read one byte which will
  5328.       be the actual interrupt number being used; the other interrupts may
  5329.       be found with INT 7F/AH=09h/CL=03h
  5330. ----------7F---------------------------------
  5331. INT 7F - Alloy NetWare Support Kit (ANSK) v2.2+ - INSTALLATION CHECK
  5332. Note:    a program may determine that it is running on an ANSK Slave by checking
  5333.       the five bytes at F000h:0000h for the ASCIZ signature "ANSK"; this
  5334.       address is RAM, and should not be written.  However, the above check
  5335.       will not work on Slaves with <1MB RAM or those using the SLIM.SYS
  5336.       device driver
  5337. ----------7F00-------------------------------
  5338. INT 7F - Alloy NTNX, MW386 - SEMAPHORE LOCK AND WAIT
  5339.     AH = 00h
  5340.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  5341. Return: AL = status
  5342.         00h successful
  5343.         01h invalid function
  5344.         02h semaphore already locked
  5345.         03h unable to lock semaphore
  5346.         04h semaphore space exhausted
  5347.         05h host/target PC did not respond (NTNX)
  5348.     AH = semaphore owner if status=02h
  5349. SeeAlso: AH=01h,AH=02h,AH=41h,INT 67/AH=00h
  5350. ----------7F01-------------------------------
  5351. INT 7F - Alloy NTNX, MW386 - SEMAPHORE LOCK
  5352.     AH = 01h
  5353.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  5354. Return: AL = status (see AH=00h)
  5355.     AH = semaphore owner if status=02h
  5356. SeeAlso: AH=00h,AH=02h,AH=41h
  5357. ----------7F0104BX0000-----------------------
  5358. INT 7F - HLLAPI (IBM 3270 High-Level Language API)
  5359.     AX = 0104h (HLLAPI gate ID)
  5360.     BX = 0000h
  5361.     DS:SI -> parameter control block (see below)
  5362. Return: parameter control block updated
  5363.  
  5364. Format of parameter control block:
  5365. Offset    Size    Description
  5366.  00h  3 BYTEs    signature = 'PCB'
  5367.  03h    BYTE    function number (see below)
  5368.  04h    WORD    segment of control string
  5369.  06h    WORD    offset of control string
  5370.  08h    WORD    length of control string, unless explicit end-of-str char set
  5371.  0Ah    BYTE    unused
  5372.  0Bh    WORD    return code
  5373.  0Dh    WORD    maximum length of control string
  5374.  
  5375. Values for function number:
  5376.  00h    Query system (Attachmate implementation only)
  5377.  01h    Connect presentation space
  5378.  02h    Disconnect presentation space
  5379.  03h    Send string of keystrokes as if typed from keyboard
  5380.  04h    Wait ~60s, returns status of presentation space
  5381.  05h    Copy current presentation space into a user-defined buffer
  5382.  06h    Search presentation space for first occurrence of a specified string
  5383.  07h    Query cursor location in current presentation space
  5384.  08h    Copy part or all of current presentation space into user buffer
  5385.  09h    Set session parameters; parameters vary by vendor
  5386.  0Ah    Get info on sessions currently connected
  5387.  0Bh    Lock current presentation space
  5388.  0Ch    Unlock previously locked presentation space
  5389.  0Dh    Return copy of operator info area (OIA) of current presentation space
  5390.  0Eh    get attribute byte for given position in the current presentation space
  5391.  0Fh    copy string of characters to the current presentation space
  5392.  10h    workstation control functions
  5393.  11h    storage manager functions, intended primarily for BASIC applications
  5394.  12h    set delay period in half-second intervals
  5395.  14h    get info on level of workstation support used
  5396.  15h    reset session parameters to default values
  5397.  16h    get detailed info on the current session
  5398.  17h    start host notification to application on presentation sp or OIA update
  5399.  18h    check host update when host notification enabled
  5400.  19h    stop host notification
  5401.  1Eh    search field within current presentation space for string
  5402.  1Fh    get first positionof a selected field in the current presentation space
  5403.  20h    get length of specified field
  5404.  21h    copy string into a specified field
  5405.  22h    copy specified field into a user-defined buffer
  5406.  23h    create alternate presentation space (IBM only), don't use with BASIC
  5407.  24h    switch to alternate presentation space (IBM only), not with BASIC
  5408.  25h    display cursor in specified area (IBM only), don't use with BASIC
  5409.  26h    display alternate presentation space (IBM only), don't use with BASIC
  5410.  27h    delete alternate presentation space (IBM only), don't use with BASIC
  5411.  32h    start intercepting keystrokes to allow filtering
  5412.  33h    get keystrokes after turning on interception
  5413.  34h    notify operator when keystroke rejected by filter subroutine
  5414.  35h    stop intercepting keystrokes
  5415.  5Ah    send file
  5416.  5Bh    receive file
  5417.  5Ch    run a program
  5418.  5Dh    execute DOS command
  5419.  63h    change presentation space position to PC display row/col or vice versa
  5420.  FFh    Get info on DCA implementation
  5421.  
  5422. Session Parameters for function 09h:
  5423.  ATTRIB        return attributes in hex
  5424.  NOATTRIB    return attributes as blanks
  5425.  CONPHYS    make physical connection
  5426.  CONLOG        only make logical connection
  5427.  EAB        copy extended attribute bytes along with data 
  5428.  NOEAB        copy data only
  5429.  ESC=n        set escape character to "n" (default '@')
  5430.  EOT=n        set end of string character (default 00h)
  5431.  FPAUSE        full-duration pause
  5432.  IPAUSE        interruptible pause
  5433.  STRLEN        use explicit string lengths
  5434.  STREOT        use terminated strings
  5435.  SRCHALL    search entire presentation space
  5436.  SRCHFROM    search from specified offset
  5437.  SRCHFRWD    search forward from position 1
  5438.  SRCHBKWD    search backward from last position in presentation space
  5439.  TWAIT        wait specified time for keyboard ready
  5440.  LWAIT        wait until keyboard ready
  5441.  NWAIT        no wait
  5442.  TRON        enable tracing
  5443.  TROFF        disable tracing
  5444.  AUTORESET    send reset before sending keys with function 03h
  5445.  NORESET    don't send reset
  5446.  QUIET        don't display messages sent with INT 21/AH=9
  5447.  NOQUIET    allow messages to be displayed
  5448.  TIMEOUT=n    set timeout in 30-second intervals, 0 = wait until ^Break
  5449.  XLATE        translate extended attribute bytes
  5450.  NOXLATE    don't translate
  5451.  NEWRET        use HLLAPI v3.0 return code conventions
  5452.  OLDRET        use HLLAPI v2.0 return code conventions
  5453. ----------7F0105-----------------------------
  5454. INT 7F - HDILOAD.EXE - 8514/A VIDEO CONTROLLER INTERFACE
  5455.     AX = 0105h get 8514/A entry points
  5456. Return: CF set on error
  5457.     CF clear if successful
  5458.         CX:DX -> array of FAR pointers to entry points
  5459. Note:    most functions are invoked by pushing the DWORD parameter block pointer
  5460.       and then performing a FAR call via the appropriate vector of the
  5461.       entry point array
  5462.  
  5463. Function numbers: (do FAR call via entry_points+4*function)
  5464.  08h    HOPEN
  5465.  10h    HINT
  5466.  13h    HLDPAL
  5467.  15h    HBBW
  5468.  17h    HBBR
  5469.  18h    HBBCHN
  5470.  1Dh    HQMODE
  5471.  22h    HCLOSE
  5472.  30h    HINIT
  5473.  31h    HSYNC
  5474.  39h    HSPAL
  5475.  3Ah    HRPAL 
  5476. ----------7F02-------------------------------
  5477. INT 7F - Alloy NTNX, MW386 - RELEASE SEMAPHORE
  5478.     AH = 02h
  5479.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  5480. Return: AL = status
  5481.         00h successful
  5482.         01h invalid function
  5483.         02h semaphore locked by other user
  5484.         AH = semaphore owner
  5485.         03h unable to unlock semaphore
  5486.         05h target PC did not respond
  5487. SeeAlso: AH=00h,AH=01h,AH=42h
  5488. ----------7F03-------------------------------
  5489. INT 7F - Alloy ANSK, NTNX, MW386 - GET USER NUMBER
  5490.     AH = 03h
  5491. Return: AL = user number
  5492.     AH = machine number (MW386)
  5493. Note:    this function call is the recommended method for a CPU-bound process to
  5494.       prevent its priority from being lowered
  5495. SeeAlso: AH=04h,AH=05h,AH=A1h
  5496. ----------7F04-------------------------------
  5497. INT 7F - Alloy NTNX, MW386 - GET NUMBER OF USERS
  5498.     AH = 04h
  5499. Return: AL = total number of users on currrent machine (MW386)
  5500.     AL = number of slaves on system (NTNX)
  5501. SeeAlso: AH=03h
  5502. ----------7F05-------------------------------
  5503. INT 7F - Alloy NTNX (Host) - LOCK/UNLOCK SYSTEM, SPOOLER CONTROL
  5504.     AH = 05h
  5505.     AL = function
  5506.         00h lock system (disable slave services)
  5507.         01h unlock system
  5508.         02h enable spooler
  5509.         03h disable spooler
  5510.         04h enable slave timer update
  5511.         05h disable slave timer update
  5512.         06h enable form feeds
  5513.         07h disable form feeds
  5514. SeeAlso: INT 17/AH=A4h
  5515. ----------7F05-------------------------------
  5516. INT 7F - Alloy NTNX (Slave), MW386 - GET USER PARAMETERS
  5517.     AH = 05h
  5518.     DX:DI -> buffer for user information record (see below)
  5519. Notes:    MW386 provides this function for backward compatibility only, and sets
  5520.       many of the fields to zero because they are meaningless under MW386
  5521.     this function has no effect when called by the host (user 0)
  5522. SeeAlso: AH=03h
  5523.  
  5524. Format of user information record:
  5525. Offset    Size    Description
  5526.  00h    WORD    segment of video RAM
  5527.  02h    WORD    segment of secondary copy of video RAM
  5528.  04h    WORD    offset of screen update flag (see INT 10/AH=8Bh)
  5529.         flag nonzero if update needed
  5530.  06h    WORD    video NMI enable port
  5531.         (not used by MW386, set to 0000h)
  5532.  08h    WORD    video NMI disable port
  5533.         (not used by MW386, set to 0000h)
  5534.  0Ah    BYTE    processor type
  5535.         00h 8088
  5536.         01h V20
  5537.         02h 8086
  5538.         03h V30
  5539.         06h 80386
  5540.  0Bh    WORD    multitasking flag (00h = single tasking, 01h = multitasking)
  5541.         (not used by MW386, set to 0000h)
  5542.  0Dh    WORD    offset of terminal driver
  5543.         (not used by MW386, set to 0000h)
  5544.  0Fh    BYTE    port for console I/O
  5545.         (not used by MW386, set to 0000h)
  5546.  10h    WORD    offset of processor communication busy flag
  5547.         bit 7 set when slave communicating with host
  5548.  12h    WORD    pointer to FAR NX system call
  5549.         (not used by MW386, set to 0000h)
  5550.  14h    WORD    offset of 16-byte user configuration record (see AH=38h)
  5551.  16h    WORD    offset of command/status word
  5552.  18h    WORD    offset of screen valid flag (see INT 10/AH=93h)
  5553.         nonzero if screen must be repainted
  5554.  1Ah    WORD    offset of screen repaint flag
  5555.  1Ch    WORD    pointer to NEAR NX system call
  5556.         (not used by MW386, set to 0000h)
  5557.  1Eh    WORD    offset for intercept flags
  5558.         (not used by MW386, set to 0000h)
  5559.         intercept flag = FFh if MSDOS intercepts should be disabled
  5560.  20h    WORD    offset of terminal lock flag (see INT 10/AH=92h)
  5561.         lock flag = FFh if backgrnd screen updates should be suspended
  5562.  22h 26 BYTEs    reserved
  5563. ----------7F06-------------------------------
  5564. INT 7F - Alloy NTNX (Host) - GET SHARED DRIVE INFO
  5565.     AH = 06h
  5566.     AL = drive number (1=A:, 2=B:, etc)
  5567.     ES:DI -> drive info record (see below)
  5568. Return: AX = status
  5569.         0000h successful
  5570.         ES:DI buffer filled
  5571.         0001h not shared drive
  5572.  
  5573. Format of drive info record:
  5574. Offset    Size    Description
  5575.  00h    WORD    segment of drive IO-REQUEST structure (MSDOS DPB)
  5576.  02h    WORD    segment of allocation map (owner table)
  5577.         one byte per FAT entry, containing user ID owning that entry
  5578.  04h    WORD    segment of master FAT for drive (copy of FAT on disk)
  5579.  06h    WORD    pointer to configuration file
  5580.  08h    WORD    total number of clusters
  5581.  0Ah    WORD    bytes per sector
  5582.  0Ch    WORD    sectors per cluster
  5583.  0Eh    BYTE    FAT type (0Ch = 12-bit, 10h = 16-bit)
  5584. ----------7F06-------------------------------
  5585. INT 7F - Alloy NTNX (Slave) - ALLOCATE FREE CLUSTER ON SHARED DRIVE
  5586.     AH = 06h
  5587.     DL = drive number (1=A:,2=B:,etc)
  5588.     CX = number of clusters to allocate
  5589. Return: AH = status
  5590.         00h successful
  5591.         CX = number of clusters still free
  5592.         10h invalid shared drive request
  5593.         CL = first and second shared drives
  5594.         11h invalid cluster count (must be 01h-FFh)
  5595. ----------7F07-------------------------------
  5596. INT 7F - Alloy NTNX, MW386 - GET LIST OF SHARED DRIVES
  5597.     AH = 07h
  5598. Return: ES:DI -> shared drive list (see below)
  5599. Note:    MW386 considers all fixed disks to be shared drives; only C and D will
  5600.       be returned as shared
  5601.  
  5602. Format of shared drive list:
  5603. Offset    Size    Description
  5604.  00h    BYTE    string length
  5605.  01h    BYTE    number of shared drives
  5606.  02h  N BYTEs    one byte per shared drive
  5607. ----------7F08-------------------------------
  5608. INT 7F - Alloy NTNX (Host) - GET INTERRUPT VECTORS
  5609.     AH = 08h
  5610.     CL = function
  5611.         00h get original interrupt vector
  5612.         01h get Network Executive interrrupt
  5613.     AL = interrupt number
  5614.     DX:SI -> DWORD to hold interrupt vector
  5615. Return: AL = status
  5616.         00h successful
  5617.         01h interrupt vector not used by network executive
  5618.         02h invalid subfunction
  5619. Note:    the network executive uses interrupts 02h,08h,09h,0Fh,10h,13h,16h-19h,
  5620.       1Ch,20h,28h,2Ah,2Fh,5Bh,67h,7Fh,ECh, and F0h-FFh
  5621. SeeAlso: AH=09h/CL=03h,INT 21/AH=35h
  5622. ----------7F08--CL02-------------------------
  5623. INT 7F - Alloy NTNX - SET MESSAGE DISPLAY TIMEOUT
  5624.     AH = 08h
  5625.     CL = 02h
  5626.     DX = timeout in seconds
  5627. Return: AL = status
  5628.         00h successful
  5629.         02h invalid subfunction
  5630. ----------7F09-------------------------------
  5631. INT 7F - MultiLink Advanced - SET TASK PRIORITY
  5632.     AH = 09h
  5633.     AL = priority (0-7)
  5634. Note:    the installation check consists of ensuring that the interrupt vector
  5635.       is not pointing at segment 0000h, then checking whether the byte
  5636.       at offset 0000h in the interrupt handler's segment is E9h
  5637. ----------7F09-------------------------------
  5638. INT 7F - Alloy NTNX - ENABLE/DISABLE MUD FILE CHECKING
  5639.     AH = 09h
  5640.     CL = function
  5641.         00h enable checking of RTNX.MUD file
  5642.         01h disable RTNX.MUD checking
  5643. ----------7F09--CL02-------------------------
  5644. INT 7F - Alloy NTNX - SWITCH HOST TO DEDICATED MODE
  5645.     AH = 09h
  5646.     CL = 02h
  5647. Note:    in dedicated mode, the host will only poll for I/O requests from the
  5648.       slave processors, and not provide workstation services
  5649. ----------7F09--CL03-------------------------
  5650. INT 7F - Alloy NTNX - GET ALTERNATE INTERRUPT
  5651.     AH = 09h
  5652.     CL = 03h
  5653.     AL = default interrupt number (67h,7Fh,etc)
  5654. Return:    CL = actual interrupt which handles specified interrupt's calls
  5655. SeeAlso: AH=08h
  5656. ----------7F0A--CL00-------------------------
  5657. INT 7F - Alloy NTNX - GET SYSTEM FLAGS
  5658.     AH = 0Ah
  5659.     CL = 00h
  5660.     ES:DI -> buffer for system flags (see below)
  5661. Return: ES:DI buffer filled
  5662. Notes:    on a slave, only the NX_Busy flag is returned
  5663.     all three flags are at fixed positions, so this function only needs to
  5664.       be called once
  5665.     an interrupt handler should only perform DOS or device accesses when
  5666.       all three flags are 00h
  5667.  
  5668. Format of system flags:
  5669. Offset    Size    Description
  5670.  00h    DWORD    pointer to NX_Busy flag (nonzero when communicating with users)
  5671.  04h    DWORD    pointer to device driver busy flag
  5672.  08h    DWORD    pointer to InTimer flag
  5673. ----------7F0B--CL02-------------------------
  5674. INT 7F - Alloy NTNX (Host) - SET/RESET GRAPHICS DOS ON SLAVE
  5675.     AH = 0Bh
  5676.     CL = 02h
  5677.     AL = slave ID number
  5678.     CH = DOS to activate
  5679.         00h graphics DOS
  5680.         01h character DOS
  5681. Return: AL = status
  5682.         00h successful
  5683.         01h nothing done, proper DOS type already loaded
  5684. ----------7F10--CL00-------------------------
  5685. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - OPEN CHANNEL
  5686.     AH = 10h
  5687.     CL = 00h
  5688.     AL = channel number
  5689.     DX:DI -> channel buffer
  5690. Return: AL = status
  5691.         00h successful
  5692.         01h busy
  5693.         02h channel range error (not 00h-3Fh)
  5694.         03h invalid subfunction
  5695.         0Dh unable to open
  5696. Note:    may not be invoked from within a hardware interrupt handler
  5697. SeeAlso: AH=10h/CL=01h,AH=10h/CL=04h,AH=14h/CL=02h
  5698. ----------7F10--CL01-------------------------
  5699. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - CLOSE CHANNEL
  5700.     AH = 10h
  5701.     CL = 01h
  5702.     AL = channel number
  5703. Return: AL = status
  5704.         00h successful
  5705.         01h busy
  5706.         02h channel range error (not 00h-3Fh)
  5707.         03h invalid subfunction
  5708.         0Ah channel not open
  5709. Note:    may not be invoked from within a hardware interrupt handler
  5710. SeeAlso: AH=10h/CL=00h,AH=10h/CL=05h
  5711. ----------7F10--CL02-------------------------
  5712. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - LOCK CHANNEL
  5713.     AH = 10h
  5714.     CL = 02h
  5715.     AL = channel number
  5716. Return: AL = status
  5717.         00h successful
  5718.         01h busy
  5719.         02h channel range error (not 00h-3Fh)
  5720.         03h invalid subfunction
  5721.         0Ah channel not open
  5722.         0Ch channel already locked
  5723. Note:    may not be invoked from within a hardware interrupt handler
  5724. SeeAlso: AH=10h/CL=03h,AH=10h/CL=06h,AH=10h/CL=08h
  5725. ----------7F10--CL03-------------------------
  5726. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - UNLOCK CHANNEL
  5727.     AH = 10h
  5728.     CL = 03h
  5729.     AL = channel number
  5730. Return: AL = status (see AH=10h/CL=02h)
  5731. Notes:    should only be used on channels locked with AH=10h/CL=02h, not on those
  5732.       locked by receipt of a datagram
  5733.     may not be invoked from within a hardware interrupt handler
  5734. SeeAlso: AH=10h/CL=02h,AH=10h/CL=04h,AH=10h/CL=09h
  5735. ----------7F10--CL04-------------------------
  5736. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - RELEASE BUFFER
  5737.     AH = 10h
  5738.     CL = 04h
  5739.     AL = channel number
  5740. Return: AL = status
  5741.         00h successful
  5742.         01h busy
  5743.         02h channel range error (not 00h-3Fh)
  5744.         03h invalid subfunction
  5745. Notes:    unlocks buffer after received datagram has been processed
  5746.     may not be invoked from within a hardware interrupt handler
  5747. SeeAlso: AH=10h/CL=00h
  5748. ----------7F10--CL05-------------------------
  5749. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - CLOSE ALL CHANNELS
  5750.     AH = 10h
  5751.     CL = 05h
  5752. Return: AL = status
  5753.         00h successful
  5754.         01h busy
  5755.         02h channel range error (not 00h-3Fh)
  5756.         03h invalid subfunction
  5757. Notes:    clears all pending datagrams and clears buffer pointers before closing
  5758.       the channels
  5759.     may not be invoked from within a hardware interrupt handler
  5760. SeeAlso: AH=10h/CL=01h
  5761. ----------7F10--CL06-------------------------
  5762. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - LOCK ALL OPEN CHANNELS
  5763.     AH = 10h
  5764.     CL = 06h
  5765. Return: AL = status
  5766.         00h successful
  5767.         01h busy
  5768.         02h channel range error (not 00h-3Fh)
  5769.         03h invalid subfunction
  5770. Note:    may not be invoked from within a hardware interrupt handler
  5771. SeeAlso: AH=10h/CL=02h,AH=10h/CL=08h
  5772. ----------7F10--CL07-------------------------
  5773. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - UNLOCK ALL LOCKED IDLE CHANNELS
  5774.     AH = 10h
  5775.     CL = 07h
  5776. Return: AL = status
  5777.         00h successful
  5778.         01h busy
  5779.         02h channel range error (not 00h-3Fh)
  5780.         03h invalid subfunction
  5781. Notes:    unlocks all locked channels which have no pending datagrams
  5782.     may not be invoked from within a hardware interrupt handler
  5783. SeeAlso: AH=10h/CL=03h,AH=10h/CL=09h
  5784. ----------7F10--CL08-------------------------
  5785. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - LOCK MULTIPLE CHANNELS
  5786.     AH = 10h
  5787.     CL = 08h
  5788.     DX = maximum channel number to lock
  5789. Return: AL = status
  5790.         00h successful
  5791.         01h busy
  5792.         02h channel range error (not 00h-3Fh)
  5793.         03h invalid subfunction
  5794. Notes:    locks channels numbered 00h through the value in DX
  5795.     may not be invoked from within a hardware interrupt handler
  5796. SeeAlso: AH=10h/CL=02h,AH=10h/CL=06h,AH=10h/CL=09h
  5797. ----------7F10--CL09-------------------------
  5798. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - UNLOCK MULTIPLE CHANNELS
  5799.     AH = 10h
  5800.     CL = 09h
  5801.     DX = maximum channel number to unlock
  5802. Return: AL = status
  5803.         00h successful
  5804.         01h busy
  5805.         02h channel range error (not 00h-3Fh)
  5806.         03h invalid subfunction
  5807. Notes:    unlocks channels numbered 00h through the value in DX
  5808.     may not be invoked from within a hardware interrupt handler
  5809. SeeAlso: AH=10h/CL=03h,AH=10h/CL=07h,AH=10h/CL=08h
  5810. ----------7F11-------------------------------
  5811. INT 7F - Alloy NTNX, MW386 - SEND DATAGRAM
  5812.     AH = 11h
  5813.     DX:SI -> request block (see below)
  5814. Return: AL = status
  5815.         00h successful
  5816.         01h busy
  5817.         02h channel range error (not 00h-3Fh)
  5818.         03h invalid subfunction
  5819.         0Ah packet too large (or <2 bytes if NTNX)
  5820.         0Bh can't send packet to itself
  5821.         0Ch invalid number of destinations
  5822.         0Dh destination channel number out of range
  5823.         0Eh destination user is busy
  5824.         0Fh destination user has locked channel
  5825.         10h channel not open
  5826.         11h no datagram server on destination (NTNX)
  5827. Note:    if wildcard channel FFh used, actual channel number will be filled in
  5828. SeeAlso: AH=12h
  5829.  
  5830. Format of request block:
  5831. Offset    Size    Description
  5832.  00h    DWORD    pointer to packet to send
  5833.  04h    WORD    packet size in bytes (1-4096)
  5834.  06h    BYTE    number of destinations for packet (max 1Fh)
  5835.  07h 31 BYTEs    destination user IDs (FFh = broadcast to all except sender)
  5836.  26h 31 BYTEs    destination channels (FFh = first available channel)
  5837.  45h 31 BYTEs    return destination statuses
  5838. ----------7F12-------------------------------
  5839. INT 7F - Alloy NTNX, MW386 - ACKNOWLEDGE DATAGRAM
  5840.     AH = 12h
  5841.     AL = channel number being acknowledged
  5842.     DI:DX = 32-bit status to return to sender
  5843. Return: AL = status
  5844.         00h successful
  5845.         01h busy
  5846.         02h channel range error (not 00h-3Fh)
  5847.         03h invalid subfunction
  5848.         0Ah channel not open
  5849.         0Bh no message in channel
  5850.         0Ch destination slave busy--retry (NTNX)
  5851.         0Dh destination user not active
  5852.         0Eh destination slave not active (NTNX)
  5853.         0Fh destination disabled datagram service
  5854. Note:    also unlocks the channel, allowing the next datagram to be received
  5855. SeeAlso: AH=11h,AH=15h/CL=04h
  5856. ----------7F13--CL00-------------------------
  5857. INT 7F - Alloy NTNX, MW386 - RESET USER DATAGRAMS
  5858.     AH = 13h
  5859.     CL = 00h
  5860. Note:    clears all pending datagrams and removes all channels opened in NTNX
  5861.       compatibility mode
  5862. ----------7F14--CL00-------------------------
  5863. INT 7F - Alloy NTNX, MW386 -  SET RECEIVE ISR
  5864.     AH = 14h
  5865.     CL = 00h
  5866.     DX:DI -> application FAR receive service routine (see below)
  5867. Return: AL = status
  5868.         00h successful
  5869.         01h busy
  5870.         02h channel range error (not 00h-3Fh)
  5871.         03h invalid subfunction
  5872. SeeAlso: AH=14h/CL=01h,AH=14h/CL=03h
  5873.  
  5874. Service routine called with:
  5875.     DH = sender ID
  5876.     DL = channel with datagram
  5877.     interrupts disabled
  5878. Return: AL = response code
  5879.         00h leave buffer locked, set channel status, and repeat call later
  5880.         01h release channel buffer
  5881.         02h change buffer pointer to DX:DI
  5882.     AH,CX,DX,DI,SI may be destroyed
  5883. ----------7F14--CL01-------------------------
  5884. INT 7F - Alloy NTNX, MW386 - SET ACKNOWLEDGE ISR
  5885.     AH = 14h
  5886.     CL = 01h
  5887.     DX:DI -> application FAR acknowledge service routine (see below)
  5888. Return: AL = status
  5889.         00h successful
  5890.         01h busy
  5891.         02h channel range error (not 00h-3Fh)
  5892.         03h invalid subfunction
  5893. Note:    the service routine will be called as soon as an acknowledgment arrives
  5894. SeeAlso: AH=12h,AH=14h/CL=00h,AH=14h/CL=04h,AH=15/CL=04h
  5895.  
  5896. Service routine called with:
  5897.     DS:SI -> acknowledge structure (see AH=15h/CL=04h)
  5898. Return: AL = response code
  5899.         00h application busy, network executive should call again later
  5900.         01h acknowledge accepted
  5901.     AH,DX,SI may be destroyed
  5902. ----------7F14--CL02-------------------------
  5903. INT 7F - Alloy NTNX, MW386 - SET CHANNEL BUFFER POINTER
  5904.     AH = 14h
  5905.     CL = 02h
  5906.     AL = channel number
  5907.     DX:DI -> receive buffer
  5908. Return: AL = status
  5909.         00h successful
  5910.         01h busy
  5911.         02h channel range error (not 00h-3Fh)
  5912.         03h invalid subfunction
  5913. Note:    may be called from within a receive ISR or when a datagram is pending
  5914. SeeAlso: AH=10h/CL=00h,AH=14h/CL=00h
  5915. ----------7F14--CL03-------------------------
  5916. INT 7F - Alloy NTNX, MW386 - GET RECEIVE ISR
  5917.     AH = 14h
  5918.     CL = 03h
  5919. Return: DX:DI -> current receive ISR
  5920. SeeAlso: AH=14h/CL=00h,AH=14h/CL=04h
  5921. ----------7F14--CL04-------------------------
  5922. INT 7F - Alloy NTNX, MW386 - GET ACKNOWLEDGE ISR
  5923.     AH = 14h
  5924.     CL = 04h
  5925. Return: DX:DI -> current acknowledge ISR
  5926. SeeAlso: AH=14h/CL=01h,AH=14h/CL=03h
  5927. ----------7F14--CL05-------------------------
  5928. INT 7F - Alloy NTNX (Host), MW386 - GET BUSY POINTER
  5929.     AH = 14h
  5930.     CL = 05h
  5931.     DX:DI -> buffer for busy structure (see below)
  5932. Return: DX:DI buffer filled
  5933.  
  5934. Format of busy structure:
  5935. Offset    Size    Description
  5936.  00h    DWORD    pointer to busy flag byte
  5937.  04h    WORD    fixed port address (FF00h)
  5938. ----------7F15--CL00-------------------------
  5939. INT 7F - Alloy NTNX, MW386 - GET CHANNEL STATUS
  5940.     AH = 15h
  5941.     CL = 00h
  5942.     AL = channel number
  5943.     DX:DI -> status structure (see below)
  5944. Return: AL = status
  5945.         00h successful
  5946.         01h busy
  5947.         02h channel range error (not 00h-3Fh)
  5948.         03h invalid subfunction
  5949. SeeAlso: AH=15h/CL=01h
  5950.  
  5951. Format of status structure:
  5952. Offset    Size    Description
  5953.  00h    BYTE    channel status
  5954.         bit 0: channel open
  5955.             1: channel buffer contains received data
  5956.             7: channel locked
  5957.  01h    BYTE    sender ID
  5958. ----------7F15--CL01-------------------------
  5959. INT 7F - Alloy NTNX, MW386 - GET NEXT FULL CHANNEL
  5960.     AH = 15h
  5961.     CL = 01h
  5962.     DX:DI -> full-channel structure
  5963. Return: AL = status
  5964.         00h successful
  5965.         01h busy
  5966.         0Ah no datagrams available
  5967. Note:    MW386 v1.0 returns the lowest channel with a datagram; newer versions
  5968.       and NTNX return the oldest datagram
  5969. SeeAlso: AH=15h/CL=00h
  5970.  
  5971. Format of full-channel structure:
  5972. Offset    Size    Description
  5973.  00h    BYTE    number of channel with oldest datagram
  5974.  01h    BYTE    sender ID
  5975. ----------7F15--CL02-------------------------
  5976. INT 7F - Alloy NTNX, MW386 - GET MAXIMUM NUMBER OF CHANNELS
  5977.     AH = 15h
  5978.     CL = 02h
  5979. Return: AH = number of channels available (40h for MW386)
  5980. Note:    the application may always assume at least 32 channels available
  5981. SeeAlso: AH=15h/CL=03h
  5982. ----------7F15--CL03-------------------------
  5983. INT 7F - Alloy NTNX, MW386 - GET MAXIMUM PACKET SIZE
  5984.     AH = 15h
  5985.     CL = 03h
  5986.     DX:DI -> WORD for return value
  5987. Return: buffer WORD filled with maximum packet size (4096 for MW386)
  5988. SeeAlso: AH=15h/CL=02h
  5989. ----------7F15--CL04-------------------------
  5990. INT 7F - Alloy NTNX, MW386 - GET AND CLEAR ACKNOWLEDGE STATUS
  5991.     AH = 15h
  5992.     CL = 04h
  5993.     DX:DI -> status structure (see below)
  5994. Return: AL = status
  5995.         00h successful
  5996.         DX:DI structure filled
  5997.         01h busy
  5998.         0Ah no acknowledgement has arrived
  5999. SeeAlso: AH=12h,AH=14h/CL=01h
  6000.  
  6001. Format of status structure:
  6002. Offset    Size    Description
  6003.  00h    BYTE    sender ID
  6004.  01h    BYTE    channel number
  6005.  02h  4 BYTEs    receiver status (see AH=12h)
  6006. ----------7F16-------------------------------
  6007. INT 7F - Alloy NTNX, MW386 - DIRECT MEMORY TRANSFER
  6008.     AH = 16h
  6009.     DX:SI -> transfer structure (see below)
  6010. Return: AL = status
  6011.         00h successful
  6012.         0Ah source or destination out of range
  6013.         0Bh transfer kernal busy--try again
  6014. Notes:    this call transfers memory contents directly between users; both source
  6015.       and destination user IDs may differ from the caller's ID
  6016.     no segment wrap is allowed
  6017.  
  6018. Format of transfer structure:
  6019. Offset    Size    Description
  6020.  00h    WORD    bytes to transfer
  6021.  02h    BYTE    source ID
  6022.         FEh = caller
  6023.  03h    DWORD    source address
  6024.  07h    BYTE    destination ID
  6025.         FFh = all slaves except caller
  6026.         FEh = caller
  6027.  08h    DWORD    destination address
  6028. ----------7F21-------------------------------
  6029. INT 7F - Alloy NTNX, MW386 - SEND MESSAGE OR COMMAND TO USER(S)
  6030.     AH = 21h
  6031.     AL = sender's user ID
  6032.     DS:DX -> control packet (see below)
  6033. Note:    messages or commands are ignored if disabled by the destination user
  6034. SeeAlso: AH=22h
  6035.  
  6036. Format of control packet:
  6037. Offset    Size    Description
  6038.  00h    BYTE    packet type
  6039.         00h message
  6040.         01h NTNX command
  6041.         02h MW386 command
  6042.  01h    BYTE    destination user ID or 'A' for all users
  6043.  02h 62 BYTEs    ASCIZ message (packet type 00h)
  6044.         BIOS keycodes terminated by NUL byte (type 01h) or word (02h)
  6045. Note:    a maximum of 16 keycodes will be processed for NTNX and MW386 commands
  6046. ----------7F22-------------------------------
  6047. INT 7F - Alloy NTNX - GET MESSAGE
  6048.     AH = 22h
  6049. Return: pending messages displayed on user's screen
  6050. SeeAlso: AH=21h
  6051. ----------7F24-------------------------------
  6052. INT 7F - Alloy NTNX, MW386 - ATTACH OR RELEASE DRIVE FOR LOW-LEVEL WRITE ACCESS
  6053.     AH = 24h
  6054.     CL = function
  6055.         00h attach
  6056.         01h release
  6057.     CH = drive (0=A:,1=B:,etc)
  6058. Return: AX = status
  6059.         00h successful
  6060.         01h invalid request
  6061.         02h already attached
  6062.         03h not attached
  6063.         04h lock table full
  6064. Note:    only drives on the current machine may be attached
  6065. ----------7F24-------------------------------
  6066. INT 7F - Alloy NTNX - ATTACH/RELEASE HOST PROCESSOR
  6067.     AH = 24h
  6068.     CL = function
  6069.         02h attach host
  6070.         03h release host
  6071. Return: AX = status
  6072.         00h successful
  6073.         01h invalid request
  6074.         02h already attached
  6075.         03h not attached
  6076.         04h lock table full
  6077. Note:    the host processor may be attached in order to perform I/O via the host
  6078. ----------7F25--CL00-------------------------
  6079. INT 7F - Alloy ANSK, NTNX, MW386 - GET NETWORK EXECUTIVE VERSION
  6080.     AH = 25h
  6081.     CL = 00h            
  6082. Return: AH = version suffix letter
  6083.     CH = major version number
  6084.     CL = minor version number
  6085. SeeAlso: AH=25h/CL=01h
  6086. ----------7F25--CL01-------------------------
  6087. INT 7F - Alloy ANSK, NTNX, MW386 - GET NETWORK EXECUTIVE TYPE
  6088.     AH = 25h
  6089.     CL = 01h
  6090. Return: CL = type
  6091.         00h RTNX
  6092.         01h ATNX
  6093.         02h NTNX
  6094.         03h BTNX
  6095.         04h MW386
  6096.         05h ANSK
  6097. SeeAlso: AH=25h/CL=00h
  6098. ----------7F26--CL00-------------------------
  6099. INT 7F - Alloy NTNX, MW386 - GET NTNX FILE MODE
  6100.     AH = 26h
  6101.     CL = 00h
  6102. Return: AX = file mode bits
  6103.         bit 0: directory protection enabled
  6104.         1: extended open enabled
  6105.         2: flush on every disk write
  6106.         3: flush on every disk write in locked interval
  6107.         4: flush on reads from simultaneously opened file
  6108. Note:    MW386 does not support file modes, and always returns AX=001Fh
  6109. SeeAlso: AH=26h,AH=26h/CL=06h
  6110. ----------7F26-------------------------------
  6111. INT 7F - Alloy NTNX - SET FILE I/O CHECKING LEVEL
  6112.     AH = 26h
  6113.     CL = check type to set/reset
  6114.         01h directory protection
  6115.         02h extended open
  6116.         03h flush on every disk write
  6117.         04h flush on disk write if any lock set during write
  6118.         05h flush on all reads if file written
  6119.     AL = new state (00h off, 01h on)
  6120. SeeAlso: AH=26h/CL=00h,AH=26h/CL=06h
  6121. ----------7F26--CL06-------------------------
  6122. INT 7F - Alloy NTNX - CANCEL FLUSH ON WRITE
  6123.     AH = 26h
  6124.     CL = 06h
  6125. Note:    cancels flags set by AH=26h/CL=03h and AH=26h/CL=04h
  6126. SeeAlso: AH=26h/CL=00h
  6127. ----------7F30-------------------------------
  6128. INT 7F - Alloy MW386 - GET PORT INFORMATION
  6129.     AH = 30h
  6130.     CX = MW386 port number
  6131. Return: AL = FFh if port not found
  6132.        else     driver unit number
  6133.            BL = port mode
  6134.            BH = port type
  6135.            02h remote
  6136.            DH = owner's machine ID
  6137.            DL = owner's user ID
  6138. SeeAlso: INT 17/AH=8Bh
  6139. ----------7F31-------------------------------
  6140. INT 7F - Alloy MW386 v1.x only - CHECK PORT ASSIGNMENT
  6141.     AH = 31h
  6142.     ???
  6143. Return: ???
  6144. ----------7F37-------------------------------
  6145. INT 7F - Alloy NTNX (Host) - GET SEMAPHORE TABLE
  6146.     AH = 37h
  6147. Return: ES:AX -> semaphore table
  6148. ----------7F37-------------------------------
  6149. INT 7F - Alloy ANSK, NTNX (Slave) - DUMP STRING TO TERMINAL
  6150.     AH = 37h
  6151.     DS:DX -> ASCIZ string to display
  6152. Note:    if the string is empty, a terminal update will be forced
  6153. ----------7F38-------------------------------
  6154. INT 7F - Alloy NTNX (Slave), MW386 - SET NEW TERMINAL DRIVER
  6155.     AH = 38h
  6156.     AL = new terminal driver number
  6157.         FFh dummy driver
  6158.         FEh current driver
  6159.         FDh load new driver
  6160.         DS:SI -> new driver
  6161. SeeAlso: AH=39h
  6162. ----------7F39-------------------------------
  6163. INT 7F - Alloy MW386 - SET TERMINAL DRIVER FOR ANOTHER USER
  6164.     AH = 39h
  6165.     AL = new terminal driver number
  6166.     DL = user number (FFh = caller)
  6167.     DH = machine number if DL <> FFh
  6168. Return: CF set if invalid user number
  6169.     CF clear if successful
  6170. Notes:    only available to supervisors
  6171.     the new driver number will not take effect until the user is rebooted
  6172. SeeAlso: AH=38h
  6173. ----------7F3A-------------------------------
  6174. INT 7F - Alloy MW386 - GET TERMINAL PARAMETERS
  6175.     AH = 3Ah
  6176.     DL = user number (FFh = caller)
  6177.     DH = machine number
  6178. Return: CF clear if successful
  6179.         AH = terminal driver number
  6180.         AL = baud rate (00h = 38400, 01h = 19200, etc)
  6181.         CL = parity (00h none, 01h even, 02h odd)
  6182.         CH = handshaking (00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC)
  6183.     CF set if invalid user number
  6184. SeeAlso: AH=3Bh
  6185. ----------7F3B-------------------------------
  6186. INT 7F - Alloy MW386 - SET TERMINAL PARAMETERS
  6187.     AH = 3Bh
  6188.     AL = baud rate (00h = 38400, 01h = 19200, etc)
  6189.     CL = parity (00h none, 01h even, 02h odd)
  6190.     CH = handshaking (00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC)
  6191.     DL = user number (FFh = caller)
  6192.     DH = machine number for user
  6193. Return: CF set if invalid user number
  6194. Notes:    only available to supervisors
  6195.     the new parameters will take effect immediately if the user's terminal
  6196.       has not been started, else AH=3Dh must be called to post the changes
  6197. SeeAlso: AH=3Ah,AH=3Dh
  6198. ----------7F3C-------------------------------
  6199. INT 7F - Alloy MW386 - ENABLE/DISABLE AUTOBAUD DETECT
  6200.     AH = 3Ch
  6201.     AL = new state
  6202.          00h disabled, 01h enabled
  6203.     DL = user number (FFh = caller)
  6204.     DH = machine number for user
  6205. Return: CF set if invalid user number
  6206. Note:    only available to supervisors
  6207. SeeAlso: AH=3Dh
  6208. ----------7F3D-------------------------------
  6209. INT 7F - Alloy MW386 - POST TERMINAL CONFIGURATION CHANGES
  6210.     AH = 3Dh
  6211. Note:    should be called whenever a program changes the terminal type or its
  6212.       parameters
  6213. SeeAlso: AH=3Bh
  6214. ----------7F41-------------------------------
  6215. INT 7F - Alloy NTNX - LOCK FILE FOR USER
  6216.     AH = 41h
  6217.     AL = user ID
  6218.     DS:DX -> ASCIZ filename
  6219. Return: AL = status
  6220.         00h successful
  6221.         01h invalid function
  6222.         02h already locked
  6223.         03h unable to lock
  6224.         04h lock table full
  6225. SeeAlso: AH=00h,,AH=41"MW386",AH=42h"NTNX"
  6226. ----------7F41-------------------------------
  6227. INT 7F - Alloy MW386 - LOCK SEMAPHORE FOR USER
  6228.     AH = 41h
  6229.     AL = user ID
  6230.     DS:DX -> ASCIZ semaphore name
  6231. Return: AL = status
  6232.         00h successful
  6233.         01h invalid function
  6234.         02h semaphore already locked
  6235.         03h unable to lock semaphore
  6236.         04h semaphore space exhausted
  6237. SeeAlso: AH=00h,AH=42h"MW386"
  6238. ----------7F42-------------------------------
  6239. INT 7F - Alloy NTNX - LOCK FILE FOR USER
  6240.     AH = 42h
  6241.     AL = user ID
  6242.     DS:DX -> ASCIZ filename
  6243. Return: AL = status
  6244.         00h successful
  6245.         01h invalid function
  6246.         02h already locked
  6247.         03h unable to lock
  6248.         04h lock table full
  6249. SeeAlso: AH=00h,AH=41h"NTNX",AH=42"MW386"
  6250. ----------7F42-------------------------------
  6251. INT 7F - Alloy MW386 - UNLOCK SEMAPHORE FOR USER
  6252.     AH = 42h
  6253.     AL = user ID
  6254.     DS:DX -> ASCIZ semaphore name
  6255. Return: AL = status
  6256.         00h successful
  6257.         01h invalid function
  6258.         03h unable to unlock semaphore
  6259. SeeAlso: AH=02h,AH=41h"MW386",AH=42h"NTNX"
  6260. ----------7F4E-------------------------------
  6261. INT 7F - Alloy MW386 v2+ - SET ERROR MODE
  6262.     AH = 4Eh
  6263.     AL = error mode flags
  6264.         bit 0: display critical disk errors
  6265.         1: display sharing errors
  6266.     DX = 4E58h ("NX")
  6267. Return: AL = status
  6268.         00h successful
  6269. SeeAlso: AH=4Fh
  6270. ----------7F4F-------------------------------
  6271. INT 7F - Alloy MW386 v2+ - SET FCB MODE
  6272.     AH = 4Fh
  6273.     AL = FCB mode
  6274.         02h read/write compatibility
  6275.         42h read/write shared
  6276.     DX = 4E58h ("NX")
  6277. Return: AL = status
  6278.         00h successful
  6279. ----------7F81-------------------------------
  6280. INT 7F - Alloy NTNX - ATTACH DEVICE FOR USER
  6281.     AH = 81h
  6282.     AL = user ID
  6283.     DS:DX -> ASCIZ device name
  6284. SeeAlso: AH=82h
  6285. ----------7F82-------------------------------
  6286. INT 7F - Alloy NTNX - RELEASE DEVICE FOR USER
  6287.     AH = 82h
  6288.     AL = user ID
  6289.     DS:DX -> ASCIZ device name
  6290. SeeAlso: AH=81h
  6291. ----------7FA0-------------------------------
  6292. INT 7F - Alloy MW386 - GET USER NAME
  6293.     AH = A0h
  6294.     DL = user number (FFh = caller)
  6295.     DH = machine number for user
  6296.     ES:DI -> 17-byte buffer for ASCIZ user name
  6297. Return: CF set if invalid user number
  6298. SeeAlso: AH=03h,AH=A1h
  6299. ----------7FA1-------------------------------
  6300. INT 7F - Alloy MW386 - GET MACHINE, USER, AND PROCESS NUMBER
  6301.     AH = A1h
  6302. Return: AL = process number
  6303.     DL = user number
  6304.     DH = machine number
  6305. SeeAlso: AH=03h,AH=A0h,AH=A2h
  6306. ----------7FA2-------------------------------
  6307. INT 7F - Alloy MW386 - GET USER PRIVILEGE LEVEL
  6308.     AH = A2h
  6309.     DL = user number (FFh = caller)
  6310.     DH = machine number for user
  6311. Return: CF clear if successful
  6312.         AL = privilege level
  6313.         00h supervisor
  6314.         01h high
  6315.         02h medium
  6316.         03h low
  6317.     CF set if invalid user number
  6318. SeeAlso: AH=A1h,AH=A3h
  6319. ----------7FA3-------------------------------
  6320. INT 7F - Alloy MW386 - GET USER LOGIN STATE
  6321.     AH = A3h
  6322.     DL = user number
  6323.     DH = machine number for user
  6324. Return: CF clear if successful
  6325.         AL = login state
  6326.         00h never logged in
  6327.         01h currently logged out
  6328.         03h currently logged in
  6329.     CF set if invalid user number or user not active
  6330. SeeAlso: AH=A2h
  6331. ----------7FA4-------------------------------
  6332. INT 7F - Alloy MW386 - VERIFY USER PASSWORD
  6333.     AH = A4h
  6334.     DS:DX -> ASCIZ password (null-padded to 16 bytes)
  6335. Return: AL = 00h if accepted
  6336.        else     invalid password
  6337. ----------7FA5-------------------------------
  6338. INT 7F - Alloy MW386 - GET/SET USER STATUS
  6339.     AH = A5h
  6340.     AL = function
  6341.         00h get status
  6342.         Return: BX = user flags
  6343.                 bit 5: allow messages
  6344.             CL = scan code for task manager hotkey
  6345.             CH = scan code for spooler hotkey
  6346.             DL = scan code for task swapper hotkey
  6347.             DH = modifier key status
  6348.         01h set status
  6349.         BX = user flags (see above)
  6350.         CL = scan code for task manager hotkey
  6351.         CH = scan code for spooler hotkey
  6352.         DL = scan code for task swapper hotkey
  6353.         DH = modifier key status
  6354.     DI = machine number and user number
  6355. Return: CF set if invalid user number
  6356. Note:    must have supervisor privilege to set another user's status
  6357. ----------7FB0-------------------------------
  6358. INT 7F - Alloy NTNX, MW386 - RELEASE ALL SEMAPHORES FOR USER
  6359.     AH = B0h
  6360.     AL = user number
  6361.     DS = code segment
  6362. Note:    MW386 ignores AL and DS; it releases all semaphores locked using INT 67
  6363.       or INT 7F locking functions
  6364. SeeAlso: AH=B1h,AH=B2h,AH=B3h,AH=B4h
  6365. ----------7FB1-------------------------------
  6366. INT 7F - Alloy NTNX, MW386 - RELEASE NORMAL SEMAPHORES FOR USER
  6367.     AH = B1h
  6368.     AL = (bits 7-5) 000
  6369.          (bits 4-0) user ID
  6370. Note:    MW386 ignores AL; it releases all semaphores locked using INT 67 or
  6371.       INT 7F locking functions
  6372. SeeAlso: AH=B0h,AH=B2h,AH=B3h,AH=B4h
  6373. ----------7FB2-------------------------------
  6374. INT 7F - Alloy NTNX - RELEASE MESSAGES FOR USER
  6375.     AH = B2h
  6376.     AL = (bits 7-5) 001
  6377.          (bits 4-0) user ID
  6378. SeeAlso: AH=B0h,AH=B1h,AH=B3h,AH=B4h
  6379. ----------7FB3-------------------------------
  6380. INT 7F - Alloy NTNX - RELEASE FILES FOR USER
  6381.     AH = B3h
  6382.     AL = (bits 7-5) 010
  6383.          (bits 4-0) user ID
  6384. SeeAlso: AH=B0h,AH=B1h,AH=B2h,AH=B4h
  6385. ----------7FB4-------------------------------
  6386. INT 7F - Alloy NTNX - RELEASE DEVICES FOR USER
  6387.     AH = B4h
  6388.     AL = user ID
  6389. SeeAlso: AH=B0h,AH=B1h,AH=B2h,AH=B3h
  6390. ----------7FC3-------------------------------
  6391. INT 7F - Alloy MW386 - WRITE BYTE TO TERMINAL AUX PORT
  6392.     AH = C3h
  6393.     AL = byte to write
  6394. Return: CF clear if successful
  6395.     CF set on error
  6396. SeeAlso: AH=C6h
  6397. ----------7FC5-------------------------------
  6398. INT 7F - Alloy MW386 - CHANGE CONSOLE MODE
  6399.     AH = C5h
  6400.     AL = new console mode
  6401.         00h keyboard indirect
  6402.         01h keyboard direct
  6403.         02h data handshake enforced
  6404.         03h no data handshake
  6405. Return: CF clear if successful
  6406.         AL = prior console mode
  6407.     CF set on error (caller is not remote user)
  6408. Note:    modes 2 and 3 may be user for input through the console port; no video
  6409.       output should be performed in these modes
  6410. ----------7FC6-------------------------------
  6411. INT 7F - Alloy MW386 - WRITE BYTE TO CONSOLE PORT
  6412.     AH = C6h
  6413.     AL = byte to write
  6414. Return: CF clear if successful
  6415.     CF set on error (caller is not remote user)
  6416. Note:    any terminal driver data translation will be bypassed
  6417. SeeAlso: AH=C3h,AH=C7h
  6418. ----------7FC7-------------------------------
  6419. INT 7F - Alloy MW386 - READ CONSOLE DATA BYTE
  6420.     AH = C7h
  6421. Return: CF clear if successful
  6422.         AL = byte read
  6423.     CF set on error (no data available or caller is not remote user)
  6424. Note:    used to read data after placing console in mode 2 or 3 (see AH=C5h)
  6425. SeeAlso: AH=C5h,AH=C6h,AH=C8h
  6426. ----------7FC8-------------------------------
  6427. INT 7F - Alloy MW386 - READ CONSOLE DATA INTO BUFFER
  6428.     AH = C8h
  6429.     AL = maximum bytes to read
  6430.     ES:DI -> buffer for console data
  6431. Return: CF clear if successful
  6432.         CX = number of bytes read
  6433.     CF set on error (caller is not remote user)
  6434. SeeAlso: AH=C7h
  6435. ----------7FCF-------------------------------
  6436. INT 7F - Alloy NTNX - REBOOT USER PROCESSOR
  6437.     AH = CFh
  6438.     DS:DX -> ASCIZ string containing user number to be reset
  6439. SeeAlso: AH=D6h
  6440. ----------7FD6-------------------------------
  6441. INT 7F - Alloy MW386 - RESET NETWORK EXECUTIVE
  6442.     AH = D6h
  6443.     DS:DX -> reset packet (see below)
  6444. Return: never if succesful
  6445. Note:    all users will be shut down immediately if successful
  6446. SeeAlso: AH=CFh
  6447.  
  6448. Format of reset packet:
  6449. Offset    Size    Description
  6450.  00h    DWORD    reset code (60606060h)
  6451.  04h 16 BYTEs    ASCIZ supervisor password padded with nulls
  6452. ----------7FD7-------------------------------
  6453. INT 7F - Alloy MW386 - POST EVENT
  6454.     AH = D7h
  6455.     AL = user number (if local event)
  6456.     DX = event number
  6457. ----------7FD8-------------------------------
  6458. INT 7F - Alloy MW386 - FLUSH DISK BUFFERS
  6459.     AH = D8h
  6460. Return: CF set on error
  6461. Note:    forces all disk buffers to be written out immediately
  6462. SeeAlso: INT 21/AH=0Dh,INT 21/AX=5D01h,INT 2F/AX=1120h
  6463. ----------7FDB-------------------------------
  6464. INT 7F - Alloy MW386 v2+ - GET MW386 INVOCATION DRIVE
  6465.     AH = DBh
  6466. Return: AL = drive from which MW386 was started (2=C:,3=D:,etc)
  6467. ----------7FE0-------------------------------
  6468. INT 7F - Alloy MW386 - CREATE DOS TASK
  6469.     AH = E0h
  6470.     AL = memory size (00h=128K, 01h=256K, 02h=384K, 03h=512K, 04h=640K)
  6471.     DS:DX -> ASCIZ task name (max 16 bytes)
  6472. Return: CF clear if successful
  6473.         AL = task create ID
  6474.     CF set on error
  6475. Note:    only foreground DOS tasks can use this function
  6476. SeeAlso: AH=E1h,AH=E2h,AH=E3h,AH=E6h,AH=E7h
  6477. ----------7FE1-------------------------------
  6478. INT 7F - Alloy MW386 - GET DOS TASK PID FROM CREATE ID
  6479.     AH = E1h
  6480.     AL = create ID (from AH=E0h)
  6481. Return: AL = DOS process number
  6482.     CL = memory size (00h=128K, 01h=256K, 02h=384K, 03h=512K, 04h=640K)
  6483. Note:    this function should not be called immediately after creating a new
  6484.       DOS task, since the new task is being initialized by a concurrent
  6485.       process
  6486. SeeAlso: AH=E0h,AH=E2h
  6487. ----------7FE2-------------------------------
  6488. INT 7F - Alloy MW386 - SWITCH TO NEW DOS TASK
  6489.     AH = E2h
  6490.     AL = DOS process number (from AH=E1h)
  6491. Return: CF set on error (invalid process number or caller not foreground task)
  6492. Notes:    specified task becomes the foreground task and current task is placed
  6493.       in the background
  6494.     may only be called by a foreground task
  6495. SeeAlso: AH=E0h,AH=E1h
  6496. ----------7FE3-------------------------------
  6497. INT 7F - Alloy MW386 - CHANGE NAME OF DOS TASK
  6498.     AH = E3h
  6499. ---v1.x---
  6500.     AL = user number
  6501. ---v2+---
  6502.     BH = user number
  6503.     BL = task number
  6504. ---
  6505.     DS:DX -> ASCIZ task name
  6506. Return: CF set on error (invalid process number)
  6507. SeeAlso: AH=E0h,AH=E4h,AH=E5h
  6508. ----------7FE4-------------------------------
  6509. INT 7F - Alloy MW386 - GET TASK NAME FROM PROCESS NUMBER
  6510.     AH = E4h
  6511. ---v1.x---
  6512.     AL = user number
  6513. ---v2+---
  6514.     BH = user number
  6515.     BL = task number
  6516. ---
  6517.     ES:DI -> buffer for task name
  6518. Return: CF clear if successful
  6519.         CL = memory size (00h=128K, 01h=256K, 02h=384K, 03h=512K, 04h=640K)
  6520.         DX = task flags
  6521.         bit 7: MSDOS process
  6522.         ES:DI buffer filled
  6523.     CF set on error (invalid process number)
  6524. SeeAlso: AH=E3h,AH=E5h
  6525. ----------7FE5-------------------------------
  6526. INT 7F - Alloy MW386 - GET PROCESS NUMBER FROM TASK NAME
  6527.     AH = E5h
  6528.     DS:DX -> ASCIZ task name
  6529.     BH = user number
  6530. Return: CF clear if successful
  6531.         AL = DOS process number
  6532.         CL = memory size (00h=128K, 01h=256K, 02h=384K, 03h=512K, 04h=640K)
  6533.     CF set on error (no match for name)
  6534. SeeAlso: AH=E3h,AH=E4h
  6535. ----------7FE6-------------------------------
  6536. INT 7F - Alloy MW386 - GET NUMBER OF AVAILABLE USER TASKS
  6537.     AH = E6h
  6538. Return: AX = number of processes available to current user
  6539. SeeAlso: AH=E0h
  6540. ----------7FE7-------------------------------
  6541. INT 7F - Alloy MW386 - REMOVE DOS TASK
  6542.     AH = E7h
  6543.     AL = DOS process number
  6544. Return: CF set on error (invalid process number or first process)
  6545. Note:    can only be called by a foreground task
  6546. SeeAlso: AH=E0h
  6547. ----------7FE8-------------------------------
  6548. INT 7F - Alloy MW386 - DOS TASK DELAY
  6549.     AH = E8h
  6550.     CX = delay time in milliseconds
  6551. Note:    a delay of 0 may be used to surrender the current time slice
  6552. SeeAlso: INT 15/AX=1000h,INT 21/AH=EEh"DoubleDOS",INT 2F/AX=1680h
  6553. ----------7FF0-------------------------------
  6554. INT 7F - Alloy MW386 - RESTRICT DIRECTORY TO GROUP
  6555.     AH = F0h
  6556.     AL = group number
  6557.     DS:DX -> ASCIZ directory name
  6558. Return: CF clear if successful
  6559.         AX = status
  6560.         0002h directory not found
  6561.         0003h directory not found
  6562.         0005h directory in use, cannot be restricted
  6563.         02xxh restricted to group xxh
  6564.     CF set on error
  6565. Note:    the restriction on the directory may be removed by calling this
  6566.       function with group 0, then using AH=F1h to assign the directory to
  6567.       group 0
  6568. SeeAlso: AH=F1h,AH=F2h,AH=F3h
  6569. ----------7FF1-------------------------------
  6570. INT 7F - Alloy MW386 - ASSIGN DIRECTORY TO GROUP
  6571.     AH = F1h
  6572.     AL = group number
  6573.     DS:DX -> ASCIZ directory name
  6574. Notes:    performs permanent assignment to a group; no immediate action is taken
  6575.       unless the directory has been restricted with AH=F0h
  6576.     may be used to restrict a nonexistent directory
  6577. SeeAlso: AH=F0h
  6578. ----------7FF2-------------------------------
  6579. INT 7F - Alloy MW386 - READ RESTRICTED DIRECTORY ENTRY
  6580.     AH = F2h
  6581.     CX = entry number
  6582.     ES:DI -> 64-byte buffer
  6583. Return: CF clear if successful
  6584.         buffer filled with 63-byte directory info and 1-byte group number
  6585.     CF set on error (invalid entry)
  6586. SeeAlso: AH=F0h,AH=F3h
  6587. ----------7FF3-------------------------------
  6588. INT 7F - Alloy MW386 - READ RESTRICTED DIRECTORY ENTRY FOR GROUP
  6589.     AH = F3h
  6590.     AL = group number
  6591.     CX = entry number
  6592.     ES:DI -> 64-byte buffer
  6593. Return: CF clear if successful
  6594.         CX = next entry number
  6595.         buffer filled with 63-byte directory info and 1-byte group number
  6596.     CF set on error (no more matching entries)
  6597. Note:    like AH=F2h, but only returns directories belonging to the specified
  6598.       group
  6599. SeeAlso: AH=F2h
  6600. ----------7FF8-------------------------------
  6601. INT 7F - Alloy MW386 - ASSIGN USER TO GROUP
  6602.     AH = F8h
  6603.     AL = group number
  6604.     DL = user number
  6605.     DH = machine number (currently 00h)
  6606. Return: CF clear if successful
  6607.     CF set on error (user already in maximum number of groups)
  6608. Note:    each user is allowed eight group assignments
  6609. SeeAlso: AH=F9h,AH=FAh
  6610. ----------7FF9-------------------------------
  6611. INT 7F - Alloy MW386 - REMOVE USER FROM GROUP
  6612.     AH = F9h
  6613.     AL = group number
  6614.     DL = user number
  6615.     DH = machine number (currently 00h)
  6616. Return: CF set if failed
  6617. SeeAlso: AH=F8h,AH=FAh
  6618. ----------7FFA-------------------------------
  6619. INT 7F - Alloy MW386 - GET USER GROUP LIST
  6620.     AH = FAh
  6621.     DL = user number
  6622.     DH = machine number (currently 00h)
  6623.     ES:DI -> 16-byte buffer for group list
  6624. Return: CX = number of groups
  6625.     ES:DI buffer filled with group numbers
  6626. SeeAlso: AH=F8h,AH=F9h
  6627. ----------7FFB-------------------------------
  6628. INT 7F - Alloy MW386 - ASSIGN GROUP NAME
  6629.     AH = FBh
  6630.     CL = group number
  6631.     ES:DI -> ASCIZ group name (max 17 bytes)
  6632. SeeAlso: AH=FCh
  6633. ----------7FFC-------------------------------
  6634. INT 7F - Alloy MW386 - GET GROUP NAME
  6635.     AH = FCh
  6636.     CL = group number
  6637.     ES:DI -> 17-byte buffer for ASCIZ name
  6638. Return: ES:DI buffer filled
  6639. Note:    if the group has not been named, "(unnamed)" is returned
  6640. SeeAlso: AH=FBh
  6641. ----------80---------------------------------
  6642. INT 80 - Q-PRO4 - ???
  6643. ----------80---------------------------------
  6644. INT 80 - reserved for BASIC
  6645. ----------80----BX0000-----------------------
  6646. INT 80 - SoundBlaster SBFM driver - GET VERSION
  6647.     BX = 0000h
  6648. Note:    SBFM installs at a free interrupt in the range 80h through BFh
  6649. SeeAlso: BX=0008h
  6650. ----------80----BX0001-----------------------
  6651. INT 80 - SoundBlaster SBFM driver - SET MUSIC STATUS BYTE ADDRESS
  6652.     BX = 0001h
  6653.     DX:AX -> music status byte
  6654. SeeAlso: BX=0000h,BX=0002h,BX=0003h
  6655. ----------80----BX0002-----------------------
  6656. INT 80 - SoundBlaster SBFM driver - SET INSTRUMENT TABLE
  6657.     BX = 0002h
  6658.     CX = number of instruments
  6659.     DX:AX -> instrument table
  6660. SeeAlso: BX=0000h,BX=0001h,BX=0005h
  6661. ----------80----BX0003-----------------------
  6662. INT 80 - SoundBlaster SBFM driver - SET SYSTEM CLOCK RATE
  6663.     BX = 0003h
  6664.     AX = clock rate divisor (1193180 / desired frequency in Hertz)
  6665.         FFFFh to restore to 18.2 Hz
  6666. SeeAlso: BX=0000h,BX=0001h,BX=0004h
  6667. ----------80----BX0004-----------------------
  6668. INT 80 - SoundBlaster SBFM driver - SET DRIVER CLOCK RATE
  6669.     BX = 0004h
  6670.     AX = driver clock rate divisor (1193180 / frequency in Hertz)
  6671. Note:    default frequency is 96 Hz
  6672. SeeAlso: BX=0000h,BX=0003h
  6673. ----------80----BX0005-----------------------
  6674. INT 80 - SoundBlaster SBFM driver - TRANSPOSE MUSIC
  6675.     BX = 0005h
  6676.     AX = semi-tone offset
  6677. SeeAlso: BX=0000h,BX=0002h,BX=0006h
  6678. ----------80----BX0006-----------------------
  6679. INT 80 - SoundBlaster SBFM driver - PLAY MUSIC
  6680.     BX = 0006h
  6681.     DX:AX -> music block
  6682. Return: AX = status
  6683.         0000h successful
  6684.         0001h music already active
  6685. SeeAlso: BX=0000h,BX=0007h,BX=000Ah
  6686. ----------80----BX0007-----------------------
  6687. INT 80 - SoundBlaster SBFM driver - STOP MUSIC
  6688.     BX = 0007h
  6689. Return: AX = status
  6690.         0000h successful
  6691.         0001h music not active
  6692. SeeAlso: BX=0000h,BX=0006h,BX=0009h
  6693. ----------80----BX0008-----------------------
  6694. INT 80 - SoundBlaster SBFM driver - RESET DRIVER
  6695.     BX = 0008h
  6696. Return: AX = status
  6697.         0000h successful
  6698.         0001h music is active
  6699. SeeAlso: BX=0000h
  6700. ----------80----BX0009-----------------------
  6701. INT 80 - SoundBlaster SBFM driver - PAUSE MUSIC
  6702.     BX = 0009h
  6703. Return: AX = status
  6704.         0000h successful
  6705.         0001h no music active
  6706. SeeAlso: BX=0000h,BX=0007h,BX=000Ah
  6707. ----------80----BX000A-----------------------
  6708. INT 80 - SoundBlaster SBFM driver - RESUME MUSIC
  6709.     BX = 000Ah
  6710. Return: AX = status
  6711.         0000h successful
  6712.         0001h no music paused
  6713. SeeAlso: BX=0000h,BX=0006h,BX=0009h
  6714. ----------80----BX000B-----------------------
  6715. INT 80 - SoundBlaster SBFM driver - SET USER-DEF TRAP FOR SYSTEM-EXCLUSIVE CMDS
  6716.     BX = 000Bh
  6717.     DX:AX -> trap routine
  6718. SeeAlso: BX=0000h
  6719. ----------8001-------------------------------
  6720. INT 80 - QPC Software PKTINT.COM - INITIALIZE
  6721.     AH = 01h
  6722. Return: AX = 0000h
  6723.     CX = FFFFh
  6724.     DX = FFFFh
  6725. Notes:    this interrupt is the WinQVTNet protected mode interface to Windows 3.0
  6726.     all buffer pointers are reset back to 0
  6727. ----------8002-------------------------------
  6728. INT 80 - QPC Software PKTINT.COM - GET SEGMENT ADDRESSES
  6729.     AH = 02h
  6730.     BX = extra bytes to allocate per packet
  6731. Return: AX = segment address of 10K buffer (for receives???)
  6732.     BX = segment address of 2K buffer (for sends???)
  6733. SeeAlso: AH=05h
  6734. ----------8003-------------------------------
  6735. INT 80 - QPC Software PKTINT.COM - GET ENTRY POINT
  6736.     AH = 03h
  6737. Return: CX:DX -> receive call address
  6738. Note:    the returned address can be used in the packet driver calls since it
  6739.       will be a valid address in all DOS boxes
  6740. SeeAlso: AH=06h
  6741. ----------8004-------------------------------
  6742. INT 80 - QPC Software PKTINT.COM - ENABLE???
  6743.     AH = 04h
  6744.     BX = ???
  6745. Return: ???
  6746. ----------8005-------------------------------
  6747. INT 80 - QPC Software PKTINT.COM - GET STATISTICS
  6748.     AH = 05h
  6749. Return: AX = amount of buffer currently in use
  6750.     BX = current offset in buffer
  6751.     CX = number of times receive has been called
  6752. SeeAlso: AH=02h
  6753. ----------8006-------------------------------
  6754. INT 80 - QPC Software PKTINT.COM - REMOVE RECEIVED PACKET
  6755.     AH = 06h
  6756. Return: BX = next packet offset
  6757.     CX = number of bytes still buffered
  6758.     DX = size of packet released back into buffer pool
  6759. SeeAlso: AH=03h
  6760. ----------81---------------------------------
  6761. INT 81 - reserved for BASIC
  6762. ----------81---------------------------------
  6763. INT 81 - IBM TOKEN RING ADAPTER - ???
  6764. ----------82---------------------------------
  6765. INT 82 - reserved for BASIC
  6766. ----------82---------------------------------
  6767. INT 82 - IBM TOKEN RING ADAPTER - ???
  6768.     AH = function
  6769.         00h display message???
  6770.         DS:BX -> string
  6771.     ???
  6772. Return: ???
  6773. ----------83---------------------------------
  6774. INT 83 - reserved for BASIC
  6775. ----------84---------------------------------
  6776. INT 84 - reserved for BASIC
  6777. ----------85---------------------------------
  6778. INT 85 - reserved for BASIC
  6779. ----------86---------------------------------
  6780. INT 86 - NetBIOS - ORIGINAL INT 18
  6781. Note:    some implementations of NetBIOS reportedly relocate INT 18 here
  6782. SeeAlso: INT 18
  6783. ----------86---------------------------------
  6784. INT 86 - used by IBM ROM BASIC while in interpreter
  6785. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  6786.     BASIC.COM/BASICA.COM do not restore vector on termination
  6787. ----------86---------------------------------
  6788. INT 86 - APL*PLUS/PC - Terminate APL session and return to DOS
  6789. ----------87---------------------------------
  6790. INT 87 - used by IBM ROM BASIC while in interpreter
  6791. Notes:    called by ROM BASIC
  6792.     BASIC.COM/BASICA.COM do not restore vector on termination
  6793. ----------87---------------------------------
  6794. INT 87 - APL*PLUS/PC - ????
  6795. ----------88---------------------------------
  6796. INT 88 - used by IBM ROM BASIC while in interpreter
  6797. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  6798.     BASIC.COM/BASICA.COM do not restore vector on termination
  6799. ----------88----AL00-------------------------
  6800. INT 88 - APL*PLUS/PC - CREATE OBJECT OF ARBITRARY RANK OR SHAPE
  6801.     AL = 00h
  6802.     BX = STPTR of the variable to be assigned
  6803.     ES:SI -> model of type, rank, and shape (see below)
  6804. Return: ES:DI -> first data byte of object
  6805.     DX:CX = number of elements in the object
  6806. SeeAlso: INT C8"APL"
  6807.  
  6808. Format of shape model:
  6809. Offset    Size    Description
  6810.  00h    BYTE    type
  6811.         01h character (2-byte dimension sizes)
  6812.         02h integer (2-byte dimension sizes)
  6813.         08h floating point (2-byte dimension sizes)
  6814.         11h character (4-byte dimension sizes)
  6815.         12h integer (4-byte dimension sizes)
  6816.         18h floating point (4-byte dimension sizes)
  6817.  01h    BYTE    rank
  6818.  02h    WORD/DWORD first dimension of shape
  6819.  N    WORD/DWORD second dimension of shape
  6820.     ...
  6821. ----------88----AL01-------------------------
  6822. INT 88 - APL*PLUS/PC - CREATE CHARACTER SCALAR/VECTOR/MATRIX <64K IN SIZE
  6823.     AL = 01h
  6824.     AH = rank
  6825.     BX = STPTR of the variable to be assigned
  6826.     CX = first dimension (if any)
  6827.     DX = second dimension (if any)
  6828. Return: ES:DI -> object
  6829.     CX = number of elements in the object
  6830. Note:    each dimension must be 32767 or smaller
  6831. SeeAlso: AL=02h,AL=08h,INT C8"APL"
  6832. ----------88----AL02-------------------------
  6833. INT 88 - APL*PLUS/PC - CREATE INTEGER SCALAR/VECTOR/MATRIX <64K IN SIZE
  6834.     AL = 02h
  6835.     AH = rank
  6836.     BX = STPTR of the variable to be assigned
  6837.     CX = first dimension (if any)
  6838.     DX = second dimension (if any)
  6839. Return: ES:DI -> object
  6840.     CX = number of elements in the object
  6841. Note:    each dimension must be 32767 or smaller
  6842. SeeAlso: AL=01h,AL=08h,INT C8"APL"
  6843. ----------88----AL08-------------------------
  6844. INT 88 - APL*PLUS/PC - CREATE FLOATING POINT SCALAR/VECTOR/MATRIX <64K IN SIZE
  6845.     AL = 08h
  6846.     AH = rank
  6847.     BX = STPTR of the variable to be assigned
  6848.     CX = first dimension (if any)
  6849.     DX = second dimension (if any)
  6850. Return: ES:DI -> object
  6851.     CX = number of elements in the object
  6852. Note:    each dimension must be 32767 or smaller
  6853. SeeAlso: AL=01h,AL=02h,INT C8"APL"
  6854. ----------88----ALF5-------------------------
  6855. INT 88 - APL*PLUS/PC - FORCE OBJECT INTO REAL WORKSPACE FROM VIRTUAL
  6856.     AL = F5h
  6857.     BX = STPTR of object
  6858. SeeAlso: INT C8"APL"
  6859. ----------88----ALF6-------------------------
  6860. INT 88 - APL*PLUS/PC - MAKE NAME IMMUNE FROM OUTSWAPPING
  6861.     AL = F6h
  6862.     BX = STPTR of object
  6863. SeeAlso: AL=F7h,AL=F8h,INT C8"APL"
  6864. ----------88----ALF7-------------------------
  6865. INT 88 - APL*PLUS/PC - MAKE NAME ELIGIBLE FOR OUTSWAPPING
  6866.     AL = F7h
  6867.     BX = STPTR of object
  6868. SeeAlso: AL=F6h,AL=F8h,INT C8"APL"
  6869. ----------88----ALF8-------------------------
  6870. INT 88 - APL*PLUS/PC - REPORT WHETHER NAME IS ELIGIBLE FOR OUTSWAPPING
  6871.     AL = F8h
  6872.     BX = STPTR of object
  6873. Return:     BX = 0000h eligible
  6874.           0001h not eligible
  6875. SeeAlso: AL=F6h,AL=F7h,INT C8"APL"
  6876. ----------88----ALF9-------------------------
  6877. INT 88 - APL*PLUS/PC - DETERMINE NAME STATUS
  6878.     AL = F9h
  6879.     ES:SI -> name
  6880.     CX = length of name
  6881. Return: CF set if name ill-formed or already in use
  6882.         BX = STPTR if already in symbol table
  6883.     CF clear if name is available for use
  6884.         BX = 0000h
  6885. Note:    does not force the name into the workspace
  6886. SeeAlso: AL=FEh,AL=FFh,INT C8"APL"
  6887. ----------88----ALFC-------------------------
  6888. INT 88 - APL*PLUS/PC - DETERMINE IF MEMORY AVAIL WITHOUT GARBAGE COLLECTION
  6889.     AL = FCh
  6890.     BX = amount of memory needed (paragraphs)
  6891. Return: CF clear if memory available
  6892.     CF set if a workspace compaction is required
  6893. SeeAlso: AL=FDh,INT C8"APL"
  6894. ----------88----ALFD-------------------------
  6895. INT 88 - APL*PLUS/PC - PERFORM GARBAGE COLLECTION AND RETURN AVAILABLE MEMORY
  6896.     AL = FDh
  6897. Return: BX = number of paragraphs available in workspace
  6898. SeeAlso: AL=FCh,INT C8"APL"
  6899. ----------88----ALFE-------------------------
  6900. INT 88 - APL*PLUS/PC - CREATE NAME
  6901.     AL = FEh
  6902.     ES:SI -> name
  6903.     CX = length of name
  6904. Return: BX = STPTR of name
  6905.     DX = interpreter's data segment
  6906. SeeAlso: AL=F9h,AL=FFh,INT C8"APL"
  6907. ----------88----ALFF-------------------------
  6908. INT 88 - APL*PLUS/PC - DETERMINE NAME STATUS
  6909.     AL = FFh
  6910.     ES:SI -> name
  6911.     CX = length of name
  6912. Return: CF set if name ill-formed or already in use
  6913.         BX = STPTR if already in symbol table
  6914.     CF clear if name is available for use
  6915.         BX = 0000h
  6916. Note:    forces the name into the workspace and makes it immune from outswapping
  6917. SeeAlso: AL=F9h,AL=FEh,INT C8"APL"
  6918. ----------89---------------------------------
  6919. INT 89 - used by IBM ROM BASIC while in interpreter
  6920. Notes:    called by ROM BASIC
  6921.     BASIC.COM/BASICA.COM do not restore vector on termination
  6922. ----------8A---------------------------------
  6923. INT 8A - used by IBM ROM BASIC while in interpreter
  6924. Notes:    called by ROM BASIC
  6925.     BASIC.COM/BASICA.COM do not restore vector on termination
  6926. ----------8A---------------------------------
  6927. INT 8A - APL*PLUS/PC - PRINT SCREEN
  6928. Note:    same as INT 05
  6929. SeeAlso: INT 05,INT CA"APL"
  6930. ----------8B---------------------------------
  6931. INT 8B - used by IBM ROM BASIC while in interpreter
  6932. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  6933.     BASIC.COM/BASICA.COM do not restore vector on termination
  6934. ----------8B---------------------------------
  6935. INT 8B - APL*PLUS/PC - BEEP
  6936. Note:    same as printing a ^G via INT 21/AH=02h
  6937. SeeAlso: INT 21/AH=02h,INT CB"APL"
  6938. ----------8C---------------------------------
  6939. INT 8C - used by IBM ROM BASIC while in interpreter
  6940. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  6941.     BASIC.COM/BASICA.COM do not restore vector on termination
  6942. ----------8C---------------------------------
  6943. INT 8C - APL*PLUS/PC - CLEAR SCREEN MEMORY
  6944.     AX = flag
  6945.         0000h do not save display attributes
  6946.         0001h save attributes
  6947. SeeAlso: INT CC"APL"
  6948. ----------8D---------------------------------
  6949. INT 8D - used by IBM ROM BASIC while in interpreter
  6950. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  6951.     BASIC.COM/BASICA.COM do not restore vector on termination
  6952. ----------8E---------------------------------
  6953. INT 8E - used by IBM ROM BASIC while in interpreter
  6954. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  6955.     BASIC.COM/BASICA.COM do not restore vector on termination
  6956. ----------8F---------------------------------
  6957. INT 8F - used by IBM ROM BASIC while in interpreter
  6958. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  6959.     BASIC.COM/BASICA.COM do not restore vector on termination
  6960. ----------90---------------------------------
  6961. INT 90 - used by IBM ROM BASIC while in interpreter
  6962. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  6963.     BASIC.COM/BASICA.COM do not restore vector on termination
  6964. ----------90---------------------------------
  6965. INT 90 - APL*PLUS/PC - USED BY PORT 10 PRINTER DRIVER
  6966. ----------91---------------------------------
  6967. INT 91 - used by IBM ROM BASIC while in interpreter
  6968. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  6969.     BASIC.COM/BASICA.COM do not restore vector on termination
  6970. ----------91---------------------------------
  6971. INT 91 - IBM TOKEN RING ADAPTER - ???
  6972. ----------92---------------------------------
  6973. INT 92 - used by IBM ROM BASIC while in interpreter
  6974. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  6975.     BASIC.COM/BASICA.COM do not restore vector on termination
  6976. ----------92---------------------------------
  6977. INT 92 - Sangoma X.25 INTERFACE PROGRAM
  6978.     BX:DX -> control block
  6979. ----------93---------------------------------
  6980. INT 93 - used by IBM ROM BASIC while in interpreter
  6981. Notes:    called by ROM BASIC
  6982.     BASIC.COM/BASICA.COM do not restore vector on termination
  6983. ----------93---------------------------------
  6984. INT 93 - IBM TOKEN RING ADAPTER - ???
  6985. ----------94---------------------------------
  6986. INT 94 - used by IBM ROM BASIC while in interpreter
  6987. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  6988.     BASIC.COM/BASICA.COM do not restore vector on termination
  6989. ----------95---------------------------------
  6990. INT 95 - used by IBM ROM BASIC while in interpreter
  6991. Notes:    called by ROM BASIC
  6992.     BASIC.COM/BASICA.COM do not restore vector on termination
  6993. ----------95---------------------------------
  6994. INT 95 - APL*PLUS/PC - DETERMINE R= SPACE
  6995. Note:    use only when the R= option is invoked on entering APL
  6996. ----------96---------------------------------
  6997. INT 96 - used by IBM ROM BASIC while in interpreter
  6998. Notes:    called by ROM BASIC
  6999.     BASIC.COM/BASICA.COM do not restore vector on termination
  7000. ----------97---------------------------------
  7001. INT 97 - used by IBM ROM BASIC while in interpreter
  7002. Notes:    called by ROM BASIC
  7003.     BASIC.COM/BASICA.COM do not restore vector on termination
  7004. ----------98---------------------------------
  7005. INT 98 - used by IBM ROM BASIC while in interpreter
  7006. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7007.     BASIC.COM/BASICA.COM do not restore vector on termination
  7008. ----------99---------------------------------
  7009. INT 99 - used by IBM ROM BASIC while in interpreter
  7010. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7011.     BASIC.COM/BASICA.COM do not restore vector on termination
  7012. ----------9A---------------------------------
  7013. INT 9A - used by IBM ROM BASIC while in interpreter
  7014. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7015.     BASIC.COM/BASICA.COM do not restore vector on termination
  7016. ----------9B---------------------------------
  7017. INT 9B - used by IBM ROM BASIC while in interpreter
  7018. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7019.     BASIC.COM/BASICA.COM do not restore vector on termination
  7020. ----------9C---------------------------------
  7021. INT 9C - used by IBM ROM BASIC while in interpreter
  7022. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7023.     BASIC.COM/BASICA.COM do not restore vector on termination
  7024. ----------9D---------------------------------
  7025. INT 9D - used by IBM ROM BASIC while in interpreter
  7026. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7027.     BASIC.COM/BASICA.COM do not restore vector on termination
  7028. ----------9E---------------------------------
  7029. INT 9E - used by IBM ROM BASIC while in interpreter
  7030. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7031.     BASIC.COM/BASICA.COM do not restore vector on termination
  7032. ----------9F---------------------------------
  7033. INT 9F - used by IBM ROM BASIC while in interpreter
  7034. Notes:    called by ROM BASIC
  7035.     BASIC.COM/BASICA.COM do not restore vector on termination
  7036. ----------A0---------------------------------
  7037. INT A0 - used by IBM ROM BASIC while in interpreter
  7038. Notes:    called by ROM BASIC
  7039.     BASIC.COM/BASICA.COM do not restore vector on termination
  7040. ----------A0---------------------------------
  7041. INT A0 - APL*PLUS/PC - USED BY APL/GSS*CGI GRAPHICS INTERFACE
  7042. SeeAlso: INT 59
  7043. ----------A1---------------------------------
  7044. INT A1 - used by IBM ROM BASIC while in interpreter
  7045. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7046.     BASIC.COM/BASICA.COM do not restore vector on termination
  7047. ----------A2---------------------------------
  7048. INT A2 - used by IBM ROM BASIC while in interpreter
  7049. Notes:    called by ROM BASIC
  7050.     BASIC.COM/BASICA.COM do not restore vector on termination
  7051. ----------A3---------------------------------
  7052. INT A3 - used by IBM ROM BASIC while in interpreter
  7053. Notes:    called by ROM BASIC
  7054.     BASIC.COM/BASICA.COM do not restore vector on termination
  7055. ----------A4---------------------------------
  7056. INT A4 - used by IBM ROM BASIC while in interpreter
  7057. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7058.     BASIC.COM/BASICA.COM do not restore vector on termination
  7059. ----------A4---------------------------------
  7060. INT A4 - Right Hand Man API
  7061.     function number in AH
  7062. Note: Right-Hand Man is a TSR desk-top utility, and only hooks this interrupt
  7063.     while popped up
  7064. ----------A5---------------------------------
  7065. INT A5 - used by IBM ROM BASIC while in interpreter
  7066. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7067.     BASIC.COM/BASICA.COM do not restore vector on termination
  7068. ----------A6---------------------------------
  7069. INT A6 - used by IBM ROM BASIC while in interpreter
  7070. Notes:    called by ROM BASIC
  7071.     BASIC.COM/BASICA.COM do not restore vector on termination
  7072. ----------A7---------------------------------
  7073. INT A7 - used by IBM ROM BASIC while in interpreter
  7074. Notes:    called by ROM BASIC
  7075.     BASIC.COM/BASICA.COM do not restore vector on termination
  7076. ----------A8---------------------------------
  7077. INT A8 - used by IBM ROM BASIC while in interpreter
  7078. Notes:    called by ROM BASIC
  7079.     BASIC.COM/BASICA.COM do not restore vector on termination
  7080. ----------A9---------------------------------
  7081. INT A9 - used by IBM ROM BASIC while in interpreter
  7082. Notes:    called by ROM BASIC
  7083.     BASIC.COM/BASICA.COM do not restore vector on termination
  7084. ----------AA---------------------------------
  7085. INT AA - used by IBM ROM BASIC while in interpreter
  7086. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7087.     BASIC.COM/BASICA.COM do not restore vector on termination
  7088. ----------AB---------------------------------
  7089. INT AB - used by IBM ROM BASIC while in interpreter
  7090. Notes:    called by ROM BASIC
  7091.     BASIC.COM/BASICA.COM do not restore vector on termination
  7092. ----------AC---------------------------------
  7093. INT AC - used by IBM ROM BASIC while in interpreter
  7094. Notes:    called by ROM BASIC
  7095.     BASIC.COM/BASICA.COM do not restore vector on termination
  7096. ----------AD---------------------------------
  7097. INT AD - used by IBM ROM BASIC while in interpreter
  7098. Notes:    called by ROM BASIC
  7099.     BASIC.COM/BASICA.COM do not restore vector on termination
  7100. ----------AE---------------------------------
  7101. INT AE - used by IBM ROM BASIC while in interpreter
  7102. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7103.     BASIC.COM/BASICA.COM do not restore vector on termination
  7104. ----------AF---------------------------------
  7105. INT AF - used by IBM ROM BASIC while in interpreter
  7106. Notes:    called by ROM BASIC
  7107.     BASIC.COM/BASICA.COM do not restore vector on termination
  7108. ----------B0---------------------------------
  7109. INT B0 - used by IBM ROM BASIC while in interpreter
  7110. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7111.     BASIC.COM/BASICA.COM do not restore vector on termination
  7112. ----------B1---------------------------------
  7113. INT B1 - used by IBM ROM BASIC while in interpreter
  7114. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7115.     BASIC.COM/BASICA.COM do not restore vector on termination
  7116. ----------B2---------------------------------
  7117. INT B2 - used by IBM ROM BASIC while in interpreter
  7118. Notes:    called by ROM BASIC
  7119.     BASIC.COM/BASICA.COM do not restore vector on termination
  7120. ----------B3---------------------------------
  7121. INT B3 - used by IBM ROM BASIC while in interpreter
  7122. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7123.     BASIC.COM/BASICA.COM do not restore vector on termination
  7124. ----------B370-------------------------------
  7125. INT B3 - ZIPKEY - GET VERSION
  7126.     AH = 70h
  7127. Return: AH = major version
  7128.     AL = minor version
  7129.     CL = number of states and territories in current database
  7130.     DH = year of current database - 1900
  7131.     DL = month of current database's file date
  7132. Notes:    if installed, the string "ZIPKEY" is present at offset 75h in the
  7133.       interrupt handler's segment, and the byte at 7Bh contains the API
  7134.       version number (currently 00h)
  7135.     ZIPKEY is a resident ZIPCODE database by Eric Isaacson
  7136. ----------B371-------------------------------
  7137. INT B3 - ZIPKEY - CONVERT TWO-LETTER ABBREVIATION TO STATE CODE
  7138.     AH = 71h
  7139.     BX = abbreviation, in either case
  7140. Return: CF set on error
  7141.         AL = FFh
  7142.     CF clear if successful
  7143.         AL = ZIPKEY state code
  7144. SeeAlso: AH=72h
  7145. ----------B372-------------------------------
  7146. INT B3 - ZIPKEY - CONVERT STATE CODE TO TWO-LETTER ABBREVIATION
  7147.     AH = 72h
  7148.     BL = ZIPKEY state code
  7149. Return: CF set on error
  7150.     CF clear if successful
  7151.         AX = abbreviation, in upper case
  7152. SeeAlso: AH=71h,AH=73h
  7153. ----------B373-------------------------------
  7154. INT B3 - ZIPKEY - CONVERT STATE CODE TO STATE NAME
  7155.     AH = 73h
  7156.     BL = ZIPKEY state code
  7157.     ES:DI -> buffer for name
  7158. Return: CF set on error
  7159.     CF clear if successful
  7160.         ES:DI points one byte beyond end of name
  7161. SeeAlso: AH=72h
  7162. ----------B374-------------------------------
  7163. INT B3 - ZIPKEY - CONVERT ZIPCODE TO ASCII DIGITS
  7164.     AH = 74h
  7165.     DX = zipcode region (0-999)
  7166.     CH = last two digits of zipcode (0-99)
  7167.     ES:DI -> buffer
  7168. Return: CF set on error
  7169.     CF clear if successful
  7170.         ES:DI points one byte beyond end of digit string
  7171. ----------B375-------------------------------
  7172. INT B3 - ZIPKEY - LOOK UP STATE CODE FOR ZIPCODE
  7173.     AH = 75h
  7174.     DX = zipcode region (0-999)
  7175.     CH = last two digits of zipcode (0-99)
  7176. Return: CF set on error (zipcode not found)
  7177.         AL = suggested state code, FFh if none
  7178.     CF clear if successful
  7179.         AL = ZIPKEY state code
  7180. SeeAlso: AH=76h,AH=79h
  7181. ----------B376-------------------------------
  7182. INT B3 - ZIPKEY - LOOK UP CITY AND STATE FOR ZIPCODE
  7183.     AH = 76h
  7184.     DX = zipcode region (0-999)
  7185.     CH = last two digits of zipcode (0-99)
  7186.     ES:DI -> buffer for name
  7187. Return: CF set on error
  7188.         AL = suggested state code, FFh if none
  7189.         ES:DI buffer filled with suggested city name
  7190.     CF clear if successful
  7191.         AL = ZIPKEY state code
  7192.         ES:DI points one byte beyond end of name
  7193. SeeAlso: AH=75h,AH=78h
  7194. ----------B377-------------------------------
  7195. INT B3 - ZIPKEY - PLAY BACK EXIT KEY FOR ENTRY WITH GIVEN ZIPCODE
  7196.     AH = 77h
  7197.     DX = zipcode region (0-999)
  7198.     CH = last two digits of zipcode (0-99)
  7199.     BX = 16-bit BIOS keycode for a defined ZIPKEY alternate exit key
  7200. Return: CF set on error
  7201.     CF clear if successful    
  7202.         zipcode specification as defined by the BX keystroke is placed in
  7203.           keyboard buffer, as if the user had popped up ZIPKEY and exited
  7204.           by pressing the key specified by BX
  7205. ----------B378-------------------------------
  7206. INT B3 - ZIPKEY - LOOK UP ZIPCODES FOR A GIVEN STATE AND CITY
  7207.     AH = 78h
  7208.     BL = ZIPKEY state code
  7209.     DS:SI -> city name, terminated with 0Dh if complete name, 00h if prefix
  7210. Return: BH = number of matching entries (set to 51 if more than 50)
  7211.     DX = zipcode region of first match (0-999)
  7212.     CL = last two digits of first zipcode in the range (0-99)
  7213.     CH = last two digits of last zipcode in the range (0-99)
  7214. SeeAlso: AH=79h,AH=7Ah
  7215. ----------B379-------------------------------
  7216. INT B3 - ZIPKEY - LOOK UP ZIPCODES FOR A GIVEN CITY
  7217.     AH = 79h
  7218.     BL = ZIPKEY state code of first state to search
  7219.     DS:SI -> city name, terminated with 0Dh if complete name, 00h if prefix
  7220. Return:    AL = ZIPKEY state code of first matching state
  7221.     BH = number of matching entries (set to 51 if more than 50)
  7222.     DX = zipcode region of first match (0-999)
  7223.     CL = last two digits of first zipcode in first range (0-99)
  7224.     CH = last two digits of last zipcode in first range (0-99)
  7225. Note:    to find all matching cities, repeat search with BL set to one more than
  7226.       the returned AL
  7227. SeeAlso: AH=78h,AH=7Ah
  7228. ----------B37A-------------------------------
  7229. INT B3 - ZIPKEY - FETCH AN ENTRY FROM A PREVIOUS LOOKUP
  7230.     AH = 7Ah
  7231.     BL = case number (0 to one less than value returned in BH by lookup)
  7232. Return: AL = ZIPKEY state code
  7233.     DX = zipcode region (0-999)
  7234.     CL = last two digits of first zipcode in the range (0-99)
  7235.     CH = last two digits of last zipcode in the range (0-99)
  7236. SeeAlso: AH=78h,AH=79h
  7237. ----------B37B-------------------------------
  7238. INT B3 - ZIPKEY - GET VALUES NEEDED TO SAVE ZIPKEY CONTEXT
  7239.     AH = 7Bh
  7240. Return: BL = maximum number of characters for a city name
  7241.     BH = ZIPKEY state code for last city-name search
  7242.         FFh if none
  7243.     CX:DX = internal code identifying last city search
  7244. SeeAlso: AH=7Ch
  7245. ----------B37C-------------------------------
  7246. INT B3 - ZIPKEY - RESTORE ZIPKEY CONTEXT
  7247.     AH = 7Ch
  7248.     BL = maximum number of characters for a city name
  7249.     BH = ZIPKEY state code for last city-name search
  7250.         FFh if none
  7251.     CX:DX = internal code returned by AH=7Bh
  7252. Return: CF set on error
  7253.     CF clear if successful
  7254. SeeAlso: AH=7Bh
  7255. ----------B37D-------------------------------
  7256. INT B3 - ZIPKEY - REQUEST POP UP
  7257.     AH = 7Dh
  7258.     BL = index number to simulate pressing a hotkey
  7259.         FFh for immediate popup with no playback on return
  7260. Return: CF set on error
  7261.         AL = FDh already busy with another request
  7262.            = FEh illegal function
  7263.     CF clear if successful
  7264.         window popped up and was closed by the user
  7265. ----------B37E-------------------------------
  7266. INT B3 - ZIPKEY - GET NAME OF PRIMARY CITY FOR A ZIPCODE REGION
  7267.     AH = 7Eh
  7268.     DX = zipcode region (0-999)
  7269.     ES:DI -> buffer for name
  7270. Return: CF set on error
  7271.         AL = FFh region does not exist
  7272.     CF clear if successful
  7273.         AL = ZIPKEY state code
  7274.         ES:DI points one byte beyond end of name
  7275. ----------B37F-------------------------------
  7276. INT B3 - ZIPKEY - ENABLE/DISABLE HOTKEYS
  7277.     AH = 7Fh
  7278.     BL = function
  7279.         00h turn off hotkeys
  7280.         01h turn on hotkeys
  7281.         02h return hotkey status
  7282.         03h toggle hotkey status
  7283. Return: AL = hotkey status
  7284.         00h off
  7285.         01h on
  7286. ----------B4---------------------------------
  7287. INT B4 - used by IBM ROM BASIC while in interpreter
  7288. Notes:    called by ROM BASIC
  7289.     BASIC.COM/BASICA.COM do not restore vector on termination
  7290. ----------B5---------------------------------
  7291. INT B5 - used by IBM ROM BASIC while in interpreter
  7292. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7293.     BASIC.COM/BASICA.COM do not restore vector on termination
  7294. ----------B6---------------------------------
  7295. INT B6 - used by IBM ROM BASIC while in interpreter
  7296. Notes:    called by ROM BASIC
  7297.     BASIC.COM/BASICA.COM do not restore vector on termination
  7298. ----------B7---------------------------------
  7299. INT B7 - used by IBM ROM BASIC while in interpreter
  7300. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7301.     BASIC.COM/BASICA.COM do not restore vector on termination
  7302. ----------B8---------------------------------
  7303. INT B8 - used by IBM ROM BASIC while in interpreter
  7304. Notes:    called by ROM BASIC
  7305.     BASIC.COM/BASICA.COM do not restore vector on termination
  7306. ----------B9---------------------------------
  7307. INT B9 - used by IBM ROM BASIC while in interpreter
  7308. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7309.     BASIC.COM/BASICA.COM do not restore vector on termination
  7310. ----------BA---------------------------------
  7311. INT BA - used by IBM ROM BASIC while in interpreter
  7312. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7313.     BASIC.COM/BASICA.COM do not restore vector on termination
  7314. ----------BB---------------------------------
  7315. INT BB - used by IBM ROM BASIC while in interpreter
  7316. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7317.     BASIC.COM/BASICA.COM do not restore vector on termination
  7318. ----------BC---------------------------------
  7319. INT BC - used by IBM ROM BASIC while in interpreter
  7320. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7321.     BASIC.COM/BASICA.COM do not restore vector on termination
  7322. ----------BD---------------------------------
  7323. INT BD - used by IBM ROM BASIC while in interpreter
  7324. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7325.     BASIC.COM/BASICA.COM do not restore vector on termination
  7326. ----------BE---------------------------------
  7327. INT BE - used by IBM ROM BASIC while in interpreter
  7328. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7329.     BASIC.COM/BASICA.COM do not restore vector on termination
  7330. ----------BF---------------------------------
  7331. INT BF - used by IBM ROM BASIC while in interpreter
  7332. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7333.     BASIC.COM/BASICA.COM do not restore vector on termination
  7334. ----------C0---------------------------------
  7335. INT C0 - used by IBM ROM BASIC while in interpreter
  7336. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7337.     BASIC.COM/BASICA.COM do not restore vector on termination
  7338. ----------C1---------------------------------
  7339. INT C1 - used by IBM ROM BASIC while in interpreter
  7340. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7341.     BASIC.COM/BASICA.COM do not restore vector on termination
  7342. ----------C2---------------------------------
  7343. INT C2 - used by IBM ROM BASIC while in interpreter
  7344. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7345.     BASIC.COM/BASICA.COM do not restore vector on termination
  7346. ----------C3---------------------------------
  7347. INT C3 - used by IBM ROM BASIC while in interpreter
  7348. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7349.     BASIC.COM/BASICA.COM do not restore vector on termination
  7350. ----------C4---------------------------------
  7351. INT C4 - used by IBM ROM BASIC while in interpreter
  7352. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7353.     BASIC.COM/BASICA.COM do not restore vector on termination
  7354. ----------C5---------------------------------
  7355. INT C5 - used by IBM ROM BASIC while in interpreter
  7356. Notes:    called by ROM BASIC
  7357.     BASIC.COM/BASICA.COM do not restore vector on termination
  7358. ----------C6---------------------------------
  7359. INT C6 - used by IBM ROM BASIC while in interpreter
  7360. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7361.     BASIC.COM/BASICA.COM do not restore vector on termination
  7362. ----------C6---------------------------------
  7363. INT C6 - APL*PLUS/PC - IDENTICAL TO INT 86
  7364. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  7365.       the older interrupts
  7366. ----------C7---------------------------------
  7367. INT C7 - used by IBM ROM BASIC while in interpreter
  7368. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7369.     BASIC.COM/BASICA.COM do not restore vector on termination
  7370. ----------C7---------------------------------
  7371. INT C7 - APL*PLUS/PC - ???
  7372. ----------C8---------------------------------
  7373. INT C8 - used by IBM ROM BASIC while in interpreter
  7374. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7375.     BASIC.COM/BASICA.COM do not restore vector on termination
  7376. ----------C8---------------------------------
  7377. INT C8 - APL*PLUS/PC - IDENTICAL TO INT 88
  7378. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  7379.       the older interrupts
  7380. SeeAlso: INT 88"APL"
  7381. ----------C9---------------------------------
  7382. INT C9 - used by IBM ROM BASIC while in interpreter
  7383. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7384.     BASIC.COM/BASICA.COM do not restore vector on termination
  7385. ----------C9---------------------------------
  7386. INT C9 - APL*PLUS/PC - ???
  7387. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  7388.       the older interrupts
  7389. ----------CA---------------------------------
  7390. INT CA - used by IBM ROM BASIC while in interpreter
  7391. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7392.     BASIC.COM/BASICA.COM do not restore vector on termination
  7393. ----------CA---------------------------------
  7394. INT CA - APL*PLUS/PC - PRINT SCREEN
  7395. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  7396.       the older interrupts
  7397. SeeAlso: INT 8A"APL"
  7398. ----------CB---------------------------------
  7399. INT CB - used by IBM ROM BASIC while in interpreter
  7400. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7401.     BASIC.COM/BASICA.COM do not restore vector on termination
  7402. ----------CB---------------------------------
  7403. INT CB - APL*PLUS/PC - BEEP
  7404. Notes:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  7405.       the older interrupts
  7406.     same as printing a ^G via INT 21/AH=02h
  7407. SeeAlso: INT 8B"APL"
  7408. ----------CC---------------------------------
  7409. INT CC - used by IBM ROM BASIC while in interpreter
  7410. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7411.     BASIC.COM/BASICA.COM do not restore vector on termination
  7412. ----------CC---------------------------------
  7413. INT CC - APL*PLUS/PC - CLEAR SCREEN MEMORY
  7414.     AX = flag
  7415.         0000h do not save display attributes
  7416.         0001h save attributes
  7417. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  7418.       the older interrupts
  7419. SeeAlso: INT 8C"APL"
  7420. ----------CD---------------------------------
  7421. INT CD - used by IBM ROM BASIC while in interpreter
  7422. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7423.     BASIC.COM/BASICA.COM do not restore vector on termination
  7424. ----------CD---------------------------------
  7425. INT CD - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  7426. ----------CE---------------------------------
  7427. INT CE - used by IBM ROM BASIC while in interpreter
  7428. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7429.     BASIC.COM/BASICA.COM do not restore vector on termination
  7430. ----------CE---------------------------------
  7431. INT CE - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  7432. ----------CF---------------------------------
  7433. INT CF - used by IBM ROM BASIC while in interpreter
  7434. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7435.     BASIC.COM/BASICA.COM do not restore vector on termination
  7436. ----------CF---------------------------------
  7437. INT CF - APL*PLUS/PC - DEFAULT LOW-RESOLUTION TIMER FOR QUAD MF FUNCTION
  7438. ----------D0---------------------------------
  7439. INT D0 - used by IBM ROM BASIC while in interpreter
  7440. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7441.     BASIC.COM/BASICA.COM do not restore vector on termination
  7442. ----------D0---------------------------------
  7443. INT D0 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  7444. ----------D1---------------------------------
  7445. INT D1 - used by IBM ROM BASIC while in interpreter
  7446. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7447.     BASIC.COM/BASICA.COM do not restore vector on termination
  7448. ----------D1---------------------------------
  7449. INT D1 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  7450. ----------D2---------------------------------
  7451. INT D2 - used by IBM ROM BASIC while in interpreter
  7452. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7453.     BASIC.COM/BASICA.COM do not restore vector on termination
  7454. ----------D2---------------------------------
  7455. INT D2 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  7456. ----------D3---------------------------------
  7457. INT D3 - used by IBM ROM BASIC while in interpreter
  7458. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7459.     BASIC.COM/BASICA.COM do not restore vector on termination
  7460. ----------D3---------------------------------
  7461. INT D3 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  7462. ----------D4---------------------------------
  7463. INT D4 - used by IBM ROM BASIC while in interpreter
  7464. Notes:    called by ROM BASIC
  7465.     BASIC.COM/BASICA.COM do not restore vector on termination
  7466. ----------D4---------------------------------
  7467. INT D4 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  7468. ----------D4---------------------------------
  7469. INT D4 - PC-MOS/386 - API
  7470. ----------D5---------------------------------
  7471. INT D5 - used by IBM ROM BASIC while in interpreter
  7472. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7473.     BASIC.COM/BASICA.COM do not restore vector on termination
  7474. ----------D5---------------------------------
  7475. INT D5 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  7476. ----------D6---------------------------------
  7477. INT D6 - used by IBM ROM BASIC while in interpreter
  7478. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7479.     BASIC.COM/BASICA.COM do not restore vector on termination
  7480. ----------D6---------------------------------
  7481. INT D6 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  7482. ----------D7---------------------------------
  7483. INT D7 - used by IBM ROM BASIC while in interpreter
  7484. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7485.     BASIC.COM/BASICA.COM do not restore vector on termination
  7486. ----------D7---------------------------------
  7487. INT D7 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  7488. ----------D8---------------------------------
  7489. INT D8 - used by IBM ROM BASIC while in interpreter
  7490. Notes:    called by ROM BASIC
  7491.     BASIC.COM/BASICA.COM do not restore vector on termination
  7492. ----------D8---------------------------------
  7493. INT D8 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  7494. ----------D9---------------------------------
  7495. INT D9 - used by IBM ROM BASIC while in interpreter
  7496. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7497.     BASIC.COM/BASICA.COM do not restore vector on termination
  7498. ----------D9---------------------------------
  7499. INT D9 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  7500. ----------DA---------------------------------
  7501. INT DA - used by IBM ROM BASIC while in interpreter
  7502. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7503.     BASIC.COM/BASICA.COM do not restore vector on termination
  7504. ----------DA---------------------------------
  7505. INT DA - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  7506. ----------DB---------------------------------
  7507. INT DB - used by IBM ROM BASIC while in interpreter
  7508. Notes:    called by ROM BASIC
  7509.     BASIC.COM/BASICA.COM do not restore vector on termination
  7510. ----------DB---------------------------------
  7511. INT DB - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  7512. ----------DC---------------------------------
  7513. INT DC - PC/370 v4.1- - API
  7514. SeeAlso: INT 60"PC/370"
  7515. ----------DC---------------------------------
  7516. INT DC - used by IBM ROM BASIC while in interpreter
  7517. Notes:    called by ROM BASIC
  7518.     BASIC.COM/BASICA.COM do not restore vector on termination
  7519. ----------DC---------------------------------
  7520. INT DC - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  7521. ----------DD---------------------------------
  7522. INT DD - used by IBM ROM BASIC while in interpreter
  7523. Notes:    called by ROM BASIC
  7524.     BASIC.COM/BASICA.COM do not restore vector on termination
  7525. ----------DD---------------------------------
  7526. INT DD - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  7527. ----------DE---------------------------------
  7528. INT DE - used by IBM ROM BASIC while in interpreter
  7529. Notes:    called by ROM BASIC
  7530.     BASIC.COM/BASICA.COM do not restore vector on termination
  7531. ----------DE---------------------------------
  7532. INT DE - APL*PLUS/PC - ???
  7533. Note:    appears to be the same as INT 16
  7534. ----------DF---------------------------------
  7535. INT DF - Victor 9000 - SuperBIOS
  7536. ----------DF---------------------------------
  7537. INT DF - used by IBM ROM BASIC while in interpreter
  7538. Notes:    called by ROM BASIC
  7539.     BASIC.COM/BASICA.COM do not restore vector on termination
  7540. ----------DF---------------------------------
  7541. INT DF - APL*PLUS/PC - SAME AS INT 10
  7542. SeeAlso: INT 10
  7543. ----------E0---------------------------------
  7544. INT E0 - CP/M-86 function calls
  7545. ----------E0---------------------------------
  7546. INT E0 - used by IBM ROM BASIC while in interpreter
  7547. Notes:    called by ROM BASIC
  7548.     BASIC.COM/BASICA.COM do not restore vector on termination
  7549. ----------E0---------------------------------
  7550. INT E0 - APL*PLUS/PC - RESTIME HIGH-RESOLUTION TIMER FOR QUAD MF FUNCTION
  7551. ----------E0---------------------------------
  7552. INT E0 - "Micro-128" virus - ???
  7553. SeeAlso: INT 70"virus"
  7554. ----------E1---------------------------------
  7555. INT E1 - used by IBM ROM BASIC while in interpreter
  7556. Notes:    called by ROM BASIC
  7557.     BASIC.COM/BASICA.COM do not restore vector on termination
  7558. ----------E1---------------------------------
  7559. INT E1 - PC Cluster Disk Server Information
  7560. SeeAlso: INT E2
  7561. ----------E2---------------------------------
  7562. INT E2 - used by IBM ROM BASIC while in interpreter
  7563. Notes:    called by ROM BASIC
  7564.     BASIC.COM/BASICA.COM do not restore vector on termination
  7565. ----------E2---------------------------------
  7566. INT E2 - PC Cluster Program
  7567. ----------E3---------------------------------
  7568. INT E3 - used by IBM ROM BASIC while in interpreter
  7569. Notes:    called by ROM BASIC
  7570.     BASIC.COM/BASICA.COM do not restore vector on termination
  7571. ----------E40005-----------------------------
  7572. INT E4 - Logitech Modula v2.0 - MonitorEntry
  7573.     AX = 0005h
  7574.     BX = priority
  7575. SeeAlso: AX=0006h
  7576. ----------E40006-----------------------------
  7577. INT E4 - Logitech Modula v2.0 - MonitorExit
  7578.     AX = 0006h
  7579. SeeAlso: AX=0005h
  7580. ----------E4---------------------------------
  7581. INT E4 - used by IBM ROM BASIC while in interpreter
  7582. Notes:    called by ROM BASIC
  7583.     BASIC.COM/BASICA.COM do not restore vector on termination
  7584. ----------E5---------------------------------
  7585. INT E5 - used by IBM ROM BASIC while in interpreter
  7586. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7587.     BASIC.COM/BASICA.COM do not restore vector on termination
  7588. ----------E6---------------------------------
  7589. INT E6 - used by IBM ROM BASIC while in interpreter
  7590. Notes:    called by ROM BASIC
  7591.     BASIC.COM/BASICA.COM do not restore vector on termination
  7592. ----------E7---------------------------------
  7593. INT E7 - used by IBM ROM BASIC while in interpreter
  7594. Notes:    called by ROM BASIC
  7595.     BASIC.COM/BASICA.COM do not restore vector on termination
  7596. ----------E8---------------------------------
  7597. INT E8 - used by IBM ROM BASIC while in interpreter
  7598. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7599.     BASIC.COM/BASICA.COM do not restore vector on termination
  7600. ----------E9---------------------------------
  7601. INT E9 - used by IBM ROM BASIC while in interpreter
  7602. Notes:    called by ROM BASIC
  7603.     BASIC.COM/BASICA.COM do not restore vector on termination
  7604. ----------EA---------------------------------
  7605. INT EA - used by IBM ROM BASIC while in interpreter
  7606. Notes:    called by ROM BASIC
  7607.     BASIC.COM/BASICA.COM do not restore vector on termination
  7608. ----------EB---------------------------------
  7609. INT EB - used by IBM ROM BASIC while in interpreter
  7610. Notes:    called by ROM BASIC
  7611.     BASIC.COM/BASICA.COM do not restore vector on termination
  7612. ----------EC---------------------------------
  7613. INT EC - used by IBM ROM BASIC while in interpreter
  7614. Notes:    called by ROM BASIC
  7615.     BASIC.COM/BASICA.COM do not restore vector on termination
  7616. ----------EC---------------------------------
  7617. INT EC - used by Alloy NTNX
  7618. ----------EC---------------------------------
  7619. INT EC - Exact - RUNTIME INTERFACE MULTIPLEXOR
  7620.     AX = function number (0000h to 0140h)
  7621.     STACK:    DWORD address to return to
  7622.         any arguments required by function
  7623. Return: STACK:    return address popped, but otherwise unchanged
  7624. Notes:    this is the interface from applications to the runtime system by Exact
  7625.       Automatisering B.V. of the Netherlands.  By using this interrupt,
  7626.       it can provide DLL-style capabilities under MSDOS.
  7627.     the interrupt handler removes the return address and flags placed on
  7628.       the stack by the INT EC, then jumps to the appropriate function
  7629. ----------ED---------------------------------
  7630. INT ED - used by IBM ROM BASIC while in interpreter
  7631. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7632.     BASIC.COM/BASICA.COM do not restore vector on termination
  7633. ----------EE---------------------------------
  7634. INT EE - used by IBM ROM BASIC while in interpreter
  7635. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  7636.     BASIC.COM/BASICA.COM do not restore vector on termination
  7637. ----------EF---------------------------------
  7638. INT EF - BASIC - ORIGINAL INT 09 VECTOR
  7639. Note:    BASIC.COM/BASICA.COM do not restore vector on termination
  7640. SeeAlso: INT F0"BASIC"
  7641. ----------EF----CX0473-----------------------
  7642. INT EF - GEM - INTERFACE
  7643.     CX = 0473h
  7644.     DS:DX -> GEM parameter block
  7645. ----------F0---------------------------------
  7646. INT F0 - BASICA.COM, GWBASIC, compiled BASIC - ORIGINAL INT 08 VECTOR
  7647. Note:    BASICA.COM does not restore vector on termination
  7648. SeeAlso: INT EF"BASIC"
  7649. ----------F1---------------------------------
  7650. INT F1 - reserved for user interrupt
  7651. ----------F1---------------------------------
  7652. INT F1 - SPEECH.COM - CONVERT TEXT STRING TO SPEECH
  7653.     DS:BX -> '$'-terminated text string
  7654. Note:    SPEECH.COM is a resident text-to-speech converter by Douglas Sisco
  7655. ----------F1---------------------------------
  7656. INT F1 - Andy C. McGuire SPEECH.COM/SAY.COM
  7657. ----------F2---------------------------------
  7658. INT F2 - reserved for user interrupt
  7659. ----------F2---------------------------------
  7660. INT F2 - Andy C. McGuire SPEECH.COM/SAY.COM
  7661. ----------F3---------------------------------
  7662. INT F3 - reserved for user interrupt
  7663. ----------F4---------------------------------
  7664. INT F4 - reserved for user interrupt
  7665. ----------F4---------------------------------
  7666. INT F4 - DoubleDOS - GIVE UP REST OF CURRENT CLOCK TICK AND ALL OF NEXT TICK
  7667. SeeAlso: INT 21/AH=EEh"DoubleDOS",INT FE"DoubleDOS"
  7668. ----------F5---------------------------------
  7669. INT F5 - reserved for user interrupt
  7670. ----------F5---------------------------------
  7671. INT F5 - DoubleDOS - ???
  7672. ----------F6---------------------------------
  7673. INT F6 - reserved for user interrupt
  7674. ----------F6---------------------------------
  7675. INT F6 - DoubleDOS - ???
  7676. ----------F7---------------------------------
  7677. INT F7 - reserved for user interrupt
  7678. ----------F7---------------------------------
  7679. INT F7 - DoubleDOS - ???
  7680. ----------F8---------------------------------
  7681. INT F8 - 10 ms INTERVAL TIMER (TANDY???)
  7682. ----------F8---------------------------------
  7683. INT F8 - DoubleDOS - ???
  7684. ----------F9---------------------------------
  7685. INT F9 - reserved for user interrupt
  7686. ----------F9---------------------------------
  7687. INT F9 - DoubleDOS - ???
  7688. ----------FA---------------------------------
  7689. INT FA - USART READY (RS-232C) (TANDY???)
  7690. ----------FA---------------------------------
  7691. INT FA - DoubleDOS - TURN OFF TIMESHARING
  7692. SeeAlso: INT 21/AH=EAh"DoubleDOS",INT FB"DoubleDOS"
  7693. ----------FB---------------------------------
  7694. INT FB - USART Rx READY (keyboard) (TANDY???)
  7695. ----------FB---------------------------------
  7696. INT FB - DoubleDOS - TURN ON TIMESHARING
  7697. SeeAlso: INT 21/AH=EBh"DoubleDOS",INT FA"DoubleDOS"
  7698. ----------FC---------------------------------
  7699. INT FC - reserved for user interrupt
  7700. ----------FC---------------------------------
  7701. INT FC - DoubleDOS - GET CURRENT SCREEN BUFFER ADDRESS
  7702. Return: ES = segment of display buffer
  7703. Note:    the display buffer may be moved if multitasking is enabled
  7704. SeeAlso: INT 21/AH=ECh"DoubleDOS",INT FB"DoubleDOS"
  7705. ----------FD---------------------------------
  7706. INT FD - reserved for user interrupt
  7707. ----------FD---------------------------------
  7708. INT FD - DoubleDOS - ???
  7709. ----------FE---------------------------------
  7710. INT FE - AT/XT286/PS50+ - destroyed by return from protected mode
  7711. ----------FE---------------------------------
  7712. INT FE - DoubleDOS - GIVE UP TIME
  7713.     AL = number of 55ms time slices to give away
  7714. SeeAlso: INT 21/AH=EEh"DoubleDOS",INT F4"DoubleDOS"
  7715. ----------FF---------------------------------
  7716. INT FF - AT/XT286/PS50+ - destroyed by return from protected mode
  7717. ----------FF---------------------------------
  7718. INT FF - Z100 - WARM BOOT
  7719. ---------------------------------------------
  7720. Please redistribute the following files unmodified as a group, in a pair of
  7721. archives named INTER26A and INTER26B (preferably the original authenticated
  7722. PKZIP archives):
  7723.     INTERRUP.1ST    the read-me file, containing credits, availability info
  7724.     INTERRUP.A    INT 00 through INT 14
  7725.     INTERRUP.B    INT 15 through INT 1F
  7726.     INTERRUP.C    INT 20 through INT 2E
  7727.     INTERRUP.D    INT 2F through INT 5F
  7728.     INTERRUP.E    INT 60 through INT FF
  7729.     INTERRUP.PRI    a brief introduction to interrupts
  7730.     INTPRINT.COM    a simple formatter that also generates a list summary
  7731.     INTPRINT.DOC    instructions for INTPRINT
  7732.     INTPRINT.C    source code for INTPRINT
  7733.     MEMORY.LST    format of the BIOS data area
  7734.     INT2QH.*    program to convert list into QuickHelp database
  7735.     INT2GUID.*    program to convert list into TurboPower GUIDE database
  7736. This compilation is Copyright (c) 1989, 1990, 1991 Ralf Brown
  7737. ---------------------------------------------
  7738. ARPA: ralf@cs.cmu.edu
  7739. UUCP: {ucbvax,harvard}!cs.cmu.edu!ralf
  7740. BIT:  ralf%cs.cmu.edu@cmuccvma
  7741. FIDO: Ralf Brown 1:129/26 or 1:129/53
  7742.     or post a message to the DR_DEBUG echo
  7743. CIS:  >INTERNET:ralf@cs.cmu.edu
  7744.